0

我想创建简单的批处理脚本来使用 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"

批处理脚本无法处理来自变量的文件名。

谢谢

4

2 回答 2

1

正如 CharlesB 建议的那样,我会在 PowerShell 中编写这样的脚本。它比批处理脚本更容易使用。

我认为这个脚本会做你想做的事:

cat dirs.txt | ForEach {
    $dirPath = $_ -replace  "%userprofile%", $env:userprofile
    Write-Host $dirPath
    robocopy $dirPath h:\
}
于 2013-01-31T17:00:31.407 回答
1

如果这个答案很幼稚,请原谅我,但是您可以更改源文件吗?如果只是这样:

\desktop
\downloads
\My Documents
\Documents
\Favorites

你可以使用这个批处理文件:

@echo off

for /f "tokens=*" %%v in (dir.txt) do (
echo:"%userprofile%%%v"
robocopy "%userprofile%%%v" h:\ 
)

如果由于某种原因执行命令的用户配置文件不起作用,则可以制作一个批处理程序,该程序会生成初始输入文件,并已拼写出正确的路径。

于 2013-01-31T19:42:13.827 回答