【发布时间】:2017-07-18 04:48:08
【问题描述】:
我的要求是编写一个批处理脚本来查找和替换给定目录集中所有*-spec.js 文件中的字符串。因此,我编写了批处理文件并运行如下批处理脚本。
<script file name> <search_string> <replace_string> <folder_path_1> <folder_path_2> <folder_path_n>
(我确定folder_path_n不会超过7)
例如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”结尾的文件。
例如不工作:
for /R !path! %%F in (*spec.js) do (
echo %%F
)
但它什么也没打印。相反,如果将变量替换为硬编码值,它会按预期工作。
例如 - 工作:
for /R C:\app\sppa\e2e %%F in (*spec.js) do (
echo %%F
)
非常感谢您的帮助!
【问题讨论】:
标签: windows file batch-file path