批处理文件识别

Batch file recognition

我有一个使用批处理文件的有趣案例,它执行以下操作:

  1. 将 jar 移动到目录
  2. 将目录中的所有 jar 添加到字符串(对于类路径)
  3. 运行 jar

我遇到的问题是它在构建字符串时没有找到新的 jar,但它找到了现有的 jar,所以如果我 运行 它两次就没问题。

为了检测罐子,我使用了这个:

set cp=

for %%a in ("jars/*.jar") do call :concat jars/%%a

:concat

set cp=%cp%;%1

如果有人有解释或解决方案,我想听听!

见!var!对比 %var%

&    seperates commands on a line.

&&    executes this command only if previous command's errorlevel is 0.

||    (not used above) executes this command only if previous command's errorlevel is NOT 0

>    output to a file

>>    append output to a file

<    input from a file

|    output of one command into the input of another command

^    escapes any of the above, including itself, if needed to be passed to a program

"    parameters with spaces must be enclosed in quotes

+ used with copy to concatinate files. E.G. copy file1+file2 newfile

, used with copy to indicate missing parameters. This updates the files modified date. E.G. copy /b file1,,

%variablename% a inbuilt or user set environmental variable

!variablename! a user set environmental variable expanded at execution time, turned with SelLocal EnableDelayedExpansion command

%<number> (%1) the nth command line parameter passed to a batch file. %0 is the batchfile's name.

%* (%*) the entire command line.

%<a letter> or %%<a letter> (%A or %%A) the variable in a for loop. Single % sign at command prompt and double % sign in a batch file.


.
--
set "cp="

setlocal enableDelayedExpansion
for %%a in ("jars/*.jar") do set "cp=!cp!;"%%~a""
endlocal &&(
   set "cp=%cp%"
)
echo %cp%

我发现了问题- 副本来自网络,所以需要时间。当我添加 timeout 4 > NUL 或类似的东西时,一切都很好。