iT邦幫忙

0

用CMD把一段程式(有其他變數Y在其中)當作變數X,當其他變數Y設定好給變數X,會抓不到

  • 分享至 

  • xImage

問題大致如下:

123.txt
1.cake
2.cake
3.cake
set Name=
set Program=for /f "delims=: tokens=*" %%a in ('findstr /p /i /c:"%Name%" "123.txt"') do set cake=%%a
set Name=1.cake
%Program%
%cake%

%Program%這個會無法捉到set Name=1.cake的值,求解~

看更多先前的討論...收起先前的討論...
nwm310 iT邦新手 4 級 ‧ 2023-01-03 21:09:06 檢舉
把 %Name% 改成 %%Name%%
dahezhi iT邦新手 4 級 ‧ 2023-01-04 08:05:23 檢舉
抓到了謝謝~但是為什麼要改成%%Name%%,一般呼叫變數不都是%Name%嗎?可以講解一下嗎?感謝~
dahezhi iT邦新手 4 級 ‧ 2023-01-04 09:26:14 檢舉
然後貼在回答裡,我才能選你為最佳解答
wiseguy iT邦超人 1 級 ‧ 2023-01-04 09:38:44 檢舉
你直接打在命令上,只需用 %Name%。但是寫在 bat 檔案裡面執行,就必須用 %%Name%%。這是因為 bat 會先語法檢查一次再執行。所以得用兩個 %% 來保持第二次執行時,它還是個變數。而不是第一次語法檢查時就先解譯。
nwm310 iT邦新手 4 級 ‧ 2023-01-04 11:58:07 檢舉
%Name%一開始就會轉換成它的值,
執行命令時,變數早已不在,
只剩下它的值。

兩個%符號 轉換成一個%符號
dahezhi iT邦新手 4 級 ‧ 2023-01-04 13:27:41 檢舉
真的懂了,謝謝各位~
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答