iT邦幫忙

1

.bat針對符合清單hostname執行程式問題

  • 分享至 

  • xImage

想請教各位大大,小弟因公司內部有派送需求,透過派送針對清單內特定主機執行程式。
目前於list.txt輸入錯誤主機名稱,測試了幾次發現就算主機名稱不在list內但都會正常執行下載檔案及執行程式,感覺判斷式失效,百思不得其解,想請教各位大大是否有哪邊需調整。

%echo off
for /f "tokens=1 delims=" %%C IN (\127.0.0.1\test\list.txt) do if %%C EQU %COMPUTERNAME% goto start

:start
RD "C:\CleanFile" /S /Q
MD "C:\CleanFile"
copy "\127.0.0.1\test\Clean.exe" "C:\CleanFile\Clean.exe"
"C:\test\Clean.exe"
:end

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
DennisLu
iT邦好手 1 級 ‧ 2023-03-06 15:10:08

%%C EQU %COMPUTERNAME% 如果為真 goto start
那沒有寫到為否跳哪裡,他就下一行繼續跑,就是跑 start的內容。

因為電腦名稱一台只有一個,為否的行為放在下面就好。

前面邏輯ture goto start flase則goto nostart

:start <為真goto的旗標
做事
goto Finish <跳過nostart,直接goto Finish

:nostart <為否goto的旗標

goto Finish <個人習慣會加,在這不加也行,但如果後面還有其他旗標或是後人追加新的旗標,才不會往後誤跑。

:Finish
exit

syuan6066 iT邦新手 5 級 ‧ 2023-03-06 16:13:08 檢舉

感謝您的回覆
因最近剛接觸程式語言,有些地方不是很清楚,我更新了內文完整的語法,根據您回覆我理解是在goto start下行補上
goto Finish

最下方補上
:Finish
exit
不確定這樣調整有沒有錯

不明
【**此則訊息已被站方移除**】

我要發表回答

立即登入回答