批处理文件识别
Batch file recognition
我有一个使用批处理文件的有趣案例,它执行以下操作:
- 将 jar 移动到目录
- 将目录中的所有 jar 添加到字符串(对于类路径)
- 运行 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
或类似的东西时,一切都很好。
我有一个使用批处理文件的有趣案例,它执行以下操作:
- 将 jar 移动到目录
- 将目录中的所有 jar 添加到字符串(对于类路径)
- 运行 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
或类似的东西时,一切都很好。