我的要求是编写批处理脚本来查找并替换给定目录集中所有*-spec.js
文件中的字符串。因此我写了批处理文件并运行批处理脚本如下。批处理脚本 - 循环中的动态/可变路径
<script file name> <search_string> <replace_string> <folder_path_1> <folder_path_2> <folder_path_n>
(我相信folder_path_n不会超出7)
e.g C:\CI\Scripts>replace.bat hello world C:\app\e2e C:\sppa\e2e
所以我的脚本如下。
@echo off
setlocal enabledelayedexpansion
set argCount=0
for %%x in (%*) do (
set /A argCount+=1
set "argVec[!argCount!]=%%~x"
)
set search=%1
set replace=%2
echo Search is %search%
echo Replace is %replace%
for /L %%i in (3,1,%argCount%) do (
set path=!argVec[%%i]!
echo path is !path!
for /R !path! %%F in (*spec.js) do (
echo %%F
)
)
这打印4个参数作为预期甚至正确的路径也被打印。在接下来的步骤中,我们期望循环遍历给定的路径并获取所有以“spec.js”结尾的文件。
e.g不工作:
for /R !path! %%F in (*spec.js) do (
echo %%F
)
但不打印输出。相反,如果该变量被替换为硬编码值,则其按预期工作。
e.g - 工作:
for /R C:\app\sppa\e2e %%F in (*spec.js) do (
echo %%F
)
你的帮助是非常感谢!
是的,但是'pushd'节省的来源和使用'popd'你可以回去了。 –
同意。在我的情况下,因为我保持每个目录的绝对路径,所以不会产生任何问题:) –