簡體   English   中英

如何在 Windows 批處理腳本中運行命令?

[英]How to run a command in Windows batch script?

我正在嘗試通過 Windows 批處理腳本將文件名動態提供給命令。 這是我的代碼,

@echo off
set /p path="Enter the project path: "
for /R "%path%" %%I in (*.java) do (java -classpath MyCheckStyle.jar;checkstyle-5.6-all.jar com.puppycrawl.tools.checkstyle.Main -c custom_check.xml %%I)
pause

基本上,我想從任何給定目錄中獲取所有 .java 文件,並將這些 java 文件提供給將為每個文件運行的另一個命令。 代替%%I我試圖動態提供 java 文件。 但它說java命令無法識別。

如果我在批處理文件中單獨使用java -classpath MyCheckStyle.jar;checkstyle-5.6-all.jar com.puppycrawl.tools.checkstyle.Main -c custom_check.xml path/filename.java 它工作正常。

我也嘗試了以下方法,

@echo off

set i=-1
set /p path="Enter the project path: "

for /R "%path%" %%I in (*.java) do (
 set /a i=!i!+1
 set filenames[!i!]=%%I
)
set lastindex=!i!

for /L %%f in (0,1,!lastindex!) do ( 
  java -classpath MyCheckStyle.jar;checkstyle-5.6-all.jar com.puppycrawl.tools.checkstyle.Main -c custom_check.xml !names[%%f]!
)
pause 

但它再次說java命令無法識別。

這里做錯了什么? 為什么我不能動態傳遞 .java 文件名?

你用項目路徑“path”命名你的變量,這很糟糕,因為只要你這樣做

set /p path="Enter the project path: "

您覆蓋了系統“路徑”,然后 Windows 找不到您的“java.exe”。 將其重命名為 project_path:

set /p project_path="Enter the project path: "
for /R "%project_path%" %%I in ....... 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM