0

robocopy を使用して、ユーザー プロファイルから NAS にフォルダーをコピーする単純なバッチ スクリプトを作成したいと考えています。スクリプトを書きましたが、うまくいきません。1 つはスクリプト、もう 1 つは NAS にコピーするフォルダー パスを配置するテキスト ファイルの 2 つのファイルがあります。スクリプトはこのテキスト ファイルを使用します。以下は、コード スニペット、バッチ ファイルです。

@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

この答えが素朴な場合は許してください。ただし、ソースファイルを変更できますか?それが単にこれだった場合:

\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 に答える
1

CharlesB が示唆したように、PowerShell でこのようなスクリプトを作成します。バッチ スクリプトよりもはるかに簡単に使用できます。

このスクリプトはあなたが望むことをすると思います:

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