我正在尝试创建一个批处理文件,用于搜索.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文件。
答案 0 :(得分:2)
set MyPath=%i%
不将mypath
设置为控制for
循环(%%i
的元变量的内容,但会将其设置为{{1}的内容这是一个普通的环境变量,很可能是未定义的,因此 nothing 。
额外问题:该行的尾随空格将在指定的值中包含。
因此i
将获得(几个空格)的值
mypath
不幸的是,批处理在一个块(一系列带括号的语句)中用任意move "%MyPath%" "C:\users\zack.vigrass\desktop\"
的值替换了遇到%var%
(在这种情况下)时该变量的值。
因为遇到for
时,for
未定义,结果将是
mypath
在这种情况下似乎没有理由将值转移到move "" "C:\users\zack.vigrass\desktop\"
。
mypath
应该适合你。