Variables 如何使路径成为变量,然后移动该文件
我正在尝试创建一个批处理文件,搜索.pst文件,然后将其移动到特定位置。到目前为止,这就是我所拥有的。请帮忙Variables 如何使路径成为变量,然后移动该文件,variables,batch-file,command-line,Variables,Batch File,Command Line,我正在尝试创建一个批处理文件,搜索.pst文件,然后将其移动到特定位置。到目前为止,这就是我所拥有的。请帮忙 cd \ setlocal enabledelayedexpansion for /r %%i in (*.pst) do ( ::echo %%~i set MyPath=%i% move "%MyPath%" "C:\users\zack.vigrass\desktop\" ) endlocal PAUSE 编辑:我不知道我不是在问问题。我主要是问为什么
cd \
setlocal enabledelayedexpansion
for /r %%i in (*.pst) do (
::echo %%~i
set MyPath=%i%
move "%MyPath%" "C:\users\zack.vigrass\desktop\"
)
endlocal
PAUSE
编辑:我不知道我不是在问问题。我主要是问为什么它返回一个空白文件而不是预期的.pst文件
set MyPath=%i%
will不会将mypath
设置为控制for
循环(%%i
)的元变量的内容,但会将其设置为i
的内容,这是一个普通的环境变量,很可能未定义,因此没有任何内容
额外问题:行上有尾随空格,将包括在指定的值中
因此,mypath
将获得一个值(几个空格)
不幸的是,批处理将块(一系列括号内的语句)中任何%var%
的值替换为遇到(在本例中)时该变量的值
由于遇到
的时,mypath
未定义,因此结果将为
move "" "C:\users\zack.vigrass\desktop\"
在本例中,似乎没有理由将值传输到mypath
move "%%i" "C:\users\zack.vigrass\desktop\"
应该对你有用。为什么不直接移动%%i
呢?我猜在你的例子中,%i%
只是一个打字错误?如果所有这些都不适用:请说明你的具体问题,目前你只是陈述事实,而不是提问。另一个著名的…(当然还有那个打字错误,@Marged指出)的受害者“MyPath=%%i”(周围有qoutes,并且%%
已更正),因此任何尾随空格将不再成为MyPath
值的一部分…小心使用::注释在代码块中,更安全地使用rem Comment
。谢谢您,这似乎解决了我的问题。我感谢您的帮助。
move "%%i" "C:\users\zack.vigrass\desktop\"