jeck貓
2019-09-24 09:44:56
我最近在.cmd文件中包含了與此類似的行:for /f %%f in ('dir /b .\directory\*.sql') DO sqlcmd -b -o ".\directory\output\%%f.txt" -i ".\directory\%%f"最初,我僅使用%f,并且在命令行上運行時可以正常工作,而在文件中運行時則無法正常工作。當我切換到%% f時,它在文件中起作用。只是想知道有什么區(qū)別。
3 回答

湖上湖
TA貢獻2003條經(jīng)驗 獲得超2個贊
要知道的三件事:
百分號在批處理文件用來表示命令行參數(shù):%1,%2,...
介于兩個百分號之間的任何字符將被解釋為變量:
echo %myvar%
兩個百分號之間(在批處理文件中)之間沒有任何區(qū)別,將其視為命令(不是批處理文件)中的單個百分號:%%f
為什么?
例如,如果我們執(zhí)行您的(簡體)命令行
FOR /f %f in ('dir /b .') DO somecommand %f
在批處理文件中,規(guī)則2會嘗試解釋
%f in ('dir /b .') DO somecommand %
作為變量。為了防止這種情況,您必須應用規(guī)則3,然后再轉義%第二條規(guī)則%:
FOR /f %%f in ('dir /b .') DO somecommand %%f

元芳怎么了
TA貢獻1798條經(jīng)驗 獲得超7個贊
在DOS中,您不能在命令行上使用環(huán)境變量,而只能在批處理文件中使用環(huán)境變量,在批處理文件中,它們使用%
符號作為分隔符。如果要%
在批處理文件中(例如在echo
語句中)使用文字符號,則需要將其加倍。
這會延續(xù)到Windows NT,Windows NT允許在命令行上使用環(huán)境變量,但是為了向后兼容,您仍然需要將%
.cmd文件中的符號加倍。
- 3 回答
- 0 關注
- 4154 瀏覽
添加回答
舉報
0/150
提交
取消