用于处理文件名的Windows批处理脚本

时间:2013-01-31 16:48:29

标签: windows batch-file

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

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

由于

2 个答案:

答案 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:\ 
)

如果某个原因导致执行命令的用户配置文件不起作用,可能会生成一个批处理程序,该程序生成具有已经拼写出正确路径的初始输入文件。