我想创建简单的批处理脚本,使用robocopy将我的文件夹从我的用户配置文件复制到NAS。我写了剧本,但它没有用。我有两个文件,一个是脚本,第二个是文本文件,我将把文件夹路径复制到NAS。该scipt将使用此文本文件。以下是代码片段, 批处理文件:
@echo off
for /f "tokens=*" %%v in (dir.txt) do (
echo:%%v
robocopy %%v h:\
)
文本文件(dir.txt)
"%userprofile%\desktop"
"%userprofile%\downloads"
"%userprofile%\My Documents"
"%userprofile%\Documents"
"%userprofile%\Favorites"
批处理脚本无法处理变量中的文件名。
由于
答案 0 :(得分:1)
正如CharlesB建议的那样,我会在PowerShell中编写这样的脚本。它比批处理脚本更容易使用。
我认为这个脚本会做你想要的:
cat dirs.txt | ForEach {
$dirPath = $_ -replace "%userprofile%", $env:userprofile
Write-Host $dirPath
robocopy $dirPath h:\
}
答案 1 :(得分:1)
如果这个答案天真,请原谅我,但是你可以改变源文件吗?如果只是这样:
\desktop
\downloads
\My Documents
\Documents
\Favorites
您可以使用此批处理文件:
@echo off
for /f "tokens=*" %%v in (dir.txt) do (
echo:"%userprofile%%%v"
robocopy "%userprofile%%%v" h:\
)
如果某个原因导致执行命令的用户配置文件不起作用,可能会生成一个批处理程序,该程序生成具有已经拼写出正确路径的初始输入文件。