Variables 如何使路径成为变量,然后移动该文件

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 编辑:我不知道我不是在问问题。我主要是问为什么

我正在尝试创建一个批处理文件,搜索.pst文件,然后将其移动到特定位置。到目前为止,这就是我所拥有的。请帮忙

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\"