如果你想讀取存儲在變量INPUT
的文件,你需要閱讀它作爲%INPUT%
做到這一點(你說INPUT
從字面上看,奇數報價)。當您在for /F
集合中指定''
時,()
內的部分將被解釋爲命令而不是文件,因此for /F
會嘗試執行命令input
,該命令無法找到,因此腳本失敗。我強烈建議將""
與usebackq
選項一起放在指定文件的周圍,以避免路徑/文件名稱中出現空白的問題。
如果要寫入存儲在變量OUTPUT
中的文件,則不得將echo
重定向到其他位置(您在代碼中放置了>>"%~2"
)。
這裏是作爲我會寫它的代碼:
@echo off
setlocal EnableExtensions DisableDelayedExpansion
rem Define constants here:
set "INPUT=%~1"
set "OUTPUT=%~2"
if not defined INPUT exit /B 1
if not defined OUTPUT set "OUTPUT=con"
> "%OUTPUT%" (
for /F usebackq^ delims^=^ eol^= %%L in ("%INPUT%") do (
set "LINE=%%L"
setlocal EnableDelayedExpansion
echo(!LINE:^|^|=,!
endlocal
)
)
endlocal
exit /B
批處理程序輸入文件必須作爲第一個命令行參數來提供。第二個參數(可選)是輸出文件。
請注意,此腳本不檢查輸入數據是否包含,
字符,這會影響轉換文件的處理方式。
echo("!LINE:||=","!"
的輸出數據(與原echo
命令行)看起來是這樣的:如果你想要把周圍返回的CSV數據,以避免數據解釋煩惱的各個領域引號,以取代上述echo
命令行:
Customer Number,Customer Name,Partner Number,Partner Name,Customer Country
1ABC,Jame,1234,Anny,USA
2DEF,Susan,5678,Prissy,UK
與改性echo
命令行輸出數據如下:
"Customer Number","Customer Name","Partner Number","Partner Name","Customer Country"
"1ABC","Jame","1234","Anny","USA"
"2DEF","Susan","5678","Prissy","UK"
好的。你有問題嗎? –
@RB。我需要寫一個批處理文件。要做到這一點 –
好的。什麼阻止你這樣做? (請注意,StackOverflow不是一個代碼編寫服務,我們可以幫助您解決所面臨的特定問題,但不會爲您編寫代碼) –