[英]How to add a space after 3rd character in a text box if length is 6 characters long or after 4th character if 7 characters long
[英]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.