亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

cmd文件中的%和%%有什么區別?

cmd文件中的%和%%有什么區別?

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時,它在文件中起作用。只是想知道有什么區別。
查看完整描述

3 回答

?
湖上湖

TA貢獻2003條經驗 獲得超2個贊


要知道的三件事:


百分號在批處理文件用來表示命令行參數:%1,%2,...

介于兩個百分號之間的任何字符將被解釋為變量:


echo %myvar%


兩個百分號之間(在批處理文件中)之間沒有任何區別,將其視為命令(不是批處理文件)中的單個百分號:%%f

為什么?


例如,如果我們執行您的(簡體)命令行


FOR /f %f in ('dir /b .') DO somecommand %f

在批處理文件中,規則2會嘗試解釋


%f in ('dir /b .') DO somecommand %

作為變量。為了防止這種情況,您必須應用規則3,然后再轉義%第二條規則%:


FOR /f %%f in ('dir /b .') DO somecommand %%f


查看完整回答
反對 回復 2019-09-24
?
元芳怎么了

TA貢獻1798條經驗 獲得超7個贊

在DOS中,您不能在命令行上使用環境變量,而只能在批處理文件中使用環境變量,在批處理文件中,它們使用%符號作為分隔符。如果要%在批處理文件中(例如在echo語句中)使用文字符號,則需要將其加倍。

這會延續到Windows NT,Windows NT允許在命令行上使用環境變量,但是為了向后兼容,您仍然需要將%.cmd文件中的符號加倍。


查看完整回答
反對 回復 2019-09-24
?
素胚勾勒不出你

TA貢獻1827條經驗 獲得超9個贊

請確保變量是單個字符。 

查看完整回答
反對 回復 2019-09-24
  • 3 回答
  • 0 關注
  • 4159 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號