在 Windows 批处理脚本中用正斜杠替换反斜杠
Replace Backslash with Forwardslash in Windows batch script
我正在编写一个简单的批处理脚本来获取文件夹中的文件名并将输出写入文件。同时,我正在向文件附加一个字符串。
@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
output.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
任何帮助都会很棒。
@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
中已经不需要的字符串替换为nothing.
然后使用call echo
执行ECHO %line:\=/%
,将剩余的\
替换为/
。
您的叙述表明您希望从输出中删除 C:\path\to\dir\files\scripts
,但您的示例输出包括 scripts
.
[调整后包括叶名]
我正在编写一个简单的批处理脚本来获取文件夹中的文件名并将输出写入文件。同时,我正在向文件附加一个字符串。
@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
output.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
任何帮助都会很棒。
@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
中已经不需要的字符串替换为nothing.
然后使用call echo
执行ECHO %line:\=/%
,将剩余的\
替换为/
。
您的叙述表明您希望从输出中删除 C:\path\to\dir\files\scripts
,但您的示例输出包括 scripts
.
[调整后包括叶名]