我的要求是編寫批處理腳本來查找並替換給定目錄集中所有*-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'你可以回去了。 –
同意。在我的情況下,因爲我保持每個目錄的絕對路徑,所以不會產生任何問題:) –