Batch file 删除批处理文件中的尾随\时出现问题
我在删除脚本中的尾随\时遇到问题,我当前的脚本是:Batch file 删除批处理文件中的尾随\时出现问题,batch-file,Batch File,我在删除脚本中的尾随\时遇到问题,我当前的脚本是: echo on setlocal enableextensions enabledelayedexpansion SET SCRIPTFOLDER=C:\install$ FOR /F "tokens=* delims=," %%a in (%SCRIPTFOLDER%\GetFilesandFoldersFromHere.Txt) DO ( set data.path=%%~pa SET data.path=%data.path:~
echo on
setlocal enableextensions enabledelayedexpansion
SET SCRIPTFOLDER=C:\install$
FOR /F "tokens=* delims=," %%a in (%SCRIPTFOLDER%\GetFilesandFoldersFromHere.Txt) DO (
set data.path=%%~pa
SET data.path=%data.path:~0,-1%
echo %data.path%
rem echo file and folder= %%~na%%~xa Folder=%data.path%
)
GetFilesandFoldersFromHere.Txt文件包含文件行和位置,例如:
T:\First File Here\Move this File.txt
当我运行上述代码时,我得到:
C:\install$\file Archive Scripts>(
set data.path=\First File Here\
rem If ~-1data.path:~0,0
SET data.path=~0,-1
echo
rem echo file and folder= Move this File.txt Folder=
我想将data.path分配给目录(不带驱动器号和尾随符)。它分配值,但当我试图去除尾随\时,该值为空
有人知道代码有什么问题吗?我相信这是一个简单的解决办法。我的头一直撞在这个屏幕上,现在从树上看不到树林。问题是,当解析for代码块(括号中包含的代码)时,所有变量读取操作在开始执行之前都会替换为变量中的值,在每次迭代中使用的是这个初始值,而不是执行期间存储到变量中的值 如果更改代码块内的变量并需要访问同一代码块内更改的值,则需要启用延迟扩展(
setlocal enabledelayedexpansion
)并更改(必要时)访问变量的语法以使用!瓦纳姆代码>而不是%varName%
。这向解析器指示此读取操作必须延迟
因此,在代码中启用了延迟扩展,但是
SET data.path=%data.path:~0,-1%
echo %data.path%
应该是
SET data.path=!data.path:~0,-1!
echo !data.path!
下面是一个删除尾部反斜杠的技巧
@echo off
set "folder=c:\data\"
for %%a in ("%folder%\.") do set "folder=%%~dpnxa"
set fold
pause
MC,现在我明白我错在哪里了,非常感谢。福克斯,绕过我的问题的很酷的方式,但使用MC,因为我最终会得到一个For,一个For,一个For。。。非常感谢,这个网站上的第一个问题和这么多有用的提示。。。