我正在撰寫一個簡單的批處理腳本來獲取檔案夾中的檔案名并將輸出寫入檔案。同時,我將一個字串附加到檔案中。
@echo off
set $string=!source ./
set "loc=C:\path\to\dir\files\scripts\"
pushd %loc%
(for %%a in (*) do (
echo %$string%%%~dpnxa))>output.txt
popd
輸出.txt:
!source ./C:\path\to\dir\files\scripts\abc.txt
!source ./C:\path\to\dir\files\scripts\xyz.txt
我很難在輸出\中用正斜杠替換反斜杠,也很難從路徑中/洗掉這部分。C:\path\to\dir\files\
最后,我試圖實作這樣的寫入檔案:
final_output.txt:
!source ./scripts/abc.txt
!source ./scripts/xyz.txt
任何幫助都會很棒。
uj5u.com熱心網友回復:
@ECHO Off
SETLOCAL
set "$string=!source ./"
set "loc=U:\path\to\dir\files\scripts\"
pushd %loc%
FOR %%a IN ("%loc%.") DO SET "locparent=%%~dpa"
(for %%a in (*) do (
SET "line=%%~dpnxa"
CALL SET "line=%$string%%%line:%locparent%=%%"
CALL ECHO %%line:\=/%%))>output.txt
popd
GOTO :EOF
[我使用驅動器 u: 進行測驗]
喲不能子串一個元變數(%%a在這種情況下) - 你需要轉移到一個用戶變數。
建立line后,使用call set執行命令,將已經存在的不需要SET "line=valueof$string%line:valueofloc=%"的字串替換為空。line
然后使用call echoto 執行ECHO %line:\=/%,用 . 替換剩余\的任何內容/。
您的敘述說明您希望C:\path\to\dir\files\scripts從輸出中洗掉,但您的示例輸出包括scripts.
[調整包括葉子名稱]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/452907.html
