簡體   English   中英

批量處理第三個令牌,然后將輸出作為第四個令牌附加到該行

[英]Batch to process the 3rd token and then append output as 4th token to the line

我正在嘗試修改輸入文件格式已更改的批次(由於我無法控制的情況)

該文件曾經只包含帶有字符串的行,在decode.exe之后我必須將其作為參數運行,例如...

or71q238hdekb6gbq27ge56fz

但是現在格式已更改,我現在需要的字符串是第三個標記(對嗎?是我所說的嗎?),該字符串現在位於第二行中,像這樣……

date_stamp,IP_address,or71q238hdekb6gbq27ge56fz

但是我需要保留前3個令牌(上面的所有部分),然后將解碼后的字符串作為第4個令牌附加,像這樣... date_stamp,IP_address,or71q238hdekb6gbq27ge56fz,This_is_the_decoded_string

我認為這實際上是不可能的,實際上我必須將整行重新寫入輸出文件,但是我迷失於如何完成此操作……嵌套的FOR操作?

這是原始的過程,當它本身只是每行上的字符串時...

for /F "tokens=*" %%A in (inputfile.csv) do "%cd%\decode.exe" %%A >> "%cd%\outputfile.csv"

現在我需要更多類似的東西...

for /F "tokens=1,2,3 delims=," %%A in (inputfile.csv) do "%cd%\decode.exe" %%C >> "%cd%\outputfile.csv"

...但是這似乎並不輸出所有4個令牌。

更新:新嘗試...

for /F "tokens=1,2,3 delims=," %%A in (inputfile.csv) do (
   set date=%%A
   set ip=%%B
   set code=%%C
   FOR /F "tokens=3 delims=," %%D in ("%cd%\decode.exe %%D") do set decode=%%D
   set newline=%date%,%ip%,%code%,%decode%
   ECHO %newline% >> "%cd%\output.csv"
)

...但是我得到的只是@ECHO OFF在output.csv中重復

但您需要添加"tokens=1,2,3 delims=,"

Tokens=1,2,3表示分配%% A,%% B和%% C Delims=,表示逗號中斷。

 date_stamp,IP_address,or71q238hdekb6gbq27ge56fz

%%A將具有date_stamp %%B將具有IP_address %%C將具有您的密鑰。

看到for /?

VBScript很簡單

Set WshShell = WScript.CreateObject("WScript.Shell")
Set Inp = WScript.StdIn
Set Out = WScript.StdOut

Do Until Inp.AtEndOfStream
    y = Inp.ReadLine
    MyArray=Split(y, ",")
    Set wmic = WshShell.Exec("cmd /c echo " & MyArray(2))

    Do While wmic.Status = 0
        WScript.Sleep 100
    Loop

    Decoded = Replace(wmic.StdOut.ReadAll, vbcrlf, "")

    Out.WriteLine MyArray(0) & "," &  MyArray(1) & "," & decoded & "," & MyArray(2)
Loop

注意,必須使用CScript而不是默認的wscript來啟動VBScript。

cscript //nologo "C:\Users\User\Desktop\Exec WMIC.vbs" <"C:\Users\User\Desktop\inputfile.csv"

並返回

date_stamp,IP_address,or71q238hdekb6gbq27ge56fz,or71q238hdekb6gbq27ge56fz

將命令從echo更改為解碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM