您好,我有一个关于使用批处理文件查找文件的问题。
我有以下批处理文件:
echo off
set arg1=%1
set arg2=%2
set arg3=%3
echo %arg1% %arg2% %arg3%
for /r %arg1% %%g in (%arg3%) do echo %%g
我的文件夹的布局如下:
TEST
---- 1702
-------jquery.js
---- 1704
-------jquery.js
每当我使用此输入运行批处理文件时:
test.bat "C:\Batch Examples\TestDir" "C:\Batch Examples\OutDir" "jquery.js"
我得到以下输出:
"C:\Batch Examples\TestDir" "C:\Batch Examples\OutDir" "jquery.js"
C:\Batch Examples\TestDir\"jquery.js"
C:\Batch Examples\TestDir\1702\"jquery.js"
C:\Batch Examples\TestDir\1704\"jquery.js"
为什么C:\Batch Examples\TestDir\"jquery.js"
结果显示?
TestDir 目录中没有 jquery 文件。
我想要的输出是:
jquery.js
jquery.js
谁能向我解释我做错了什么?
答案1
您的错误是对 arg3 使用固定值。For /R
将从 arg1 开始迭代(子)文件夹,并为每个文件夹应用“jquery.js”,它不会评估。
@Echo off
echo %1 %2 %3
for /r "%~1" %%g in ("%~3*") do echo %%~fg
应该返回:
C:\Batch Examples\TestDir\1702\jquery.js
C:\Batch Examples\TestDir\1704\jquery.js