You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

批处理中如何去除含.txt文件的文件夹路径末尾反斜杠?

解决批处理输出文件夹路径去除末尾反斜杠的问题

我明白你现在的需求:通过for /r遍历所有.txt文件并输出它们所在的文件夹路径,但默认输出的路径末尾带有反斜杠,想要去掉这个多余的符号对吧?下面给你几个可行的解决方案,分命令行直接运行和批处理文件两种场景:

方案1:命令行直接运行(临时启用延迟扩展)

直接在命令提示符里执行这条命令就行,不需要写批处理文件:

for /r %i in (*.txt) do @set "folder=%~dpi" && @cmd /v:on /c "echo !folder:~0,-1!"

原理说明

  • set "folder=%~dpi":把当前文件所在的带反斜杠的路径赋值给变量folder
  • cmd /v:on /c "echo !folder:~0,-1!":临时启用延迟扩展(/v:on),然后用字符串截取语法!folder:~0,-1!去掉变量最后一个字符(也就是末尾的反斜杠)

方案2:写在批处理文件里(使用延迟扩展)

如果要把逻辑保存成.bat文件,用这个写法:

@echo off
setlocal enabledelayedexpansion
for /r %%i in (*.txt) do (
    set "folder=%%~dpi"
    echo !folder:~0,-1!
)
endlocal

原理说明

  • setlocal enabledelayedexpansion:开启延迟扩展,这样在for循环内部可以用!变量!来实时获取变量的最新值(如果用%变量%的话,批处理会提前解析整个循环块,导致值不更新)
  • %%~dpi:批处理文件里的变量要写两个百分号,~dpi表示提取文件的驱动器号+完整路径
  • !folder:~0,-1!:截取变量folder的从第0位开始到倒数第2位的内容,也就是去掉最后一个反斜杠

方案3:批处理文件里用子程序(无需延迟扩展)

如果你不习惯用延迟扩展,也可以用子程序的方式来处理:

@echo off
for /r %%i in (*.txt) do call :remove_backslash "%%~dpi"
goto :eof

:remove_backslash
set "input_path=%~1"
echo %input_path:~0,-1%
goto :eof

原理说明

  • call :remove_backslash "%%~dpi":把带反斜杠的路径作为参数传给名为remove_backslash的子程序
  • %~1:提取子程序的第一个参数(去掉引号)
  • %input_path:~0,-1%:同样用字符串截取去掉末尾的反斜杠,因为在子程序里变量是独立解析的,不需要延迟扩展

这几个方案都能完美去掉路径末尾的反斜杠,你可以根据自己的使用场景选择~

内容的提问来源于stack exchange,提问作者Ahmad Ismail

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:01:11