ECHO コマンドを簡単に追加して、変数の値を確認できます。そうすれば、それらが適切に設定されているかどうかを確実に知ることができます。
とにかく、投稿されたスクリプトにはいくつかの問題があるようです。
最初のものはこの行です:
SET PathString = C:\Users\bibhukdas\Documents\New_folder1~C:\Users\bibhukdas\Documents\New_folder
周りのスペース=
は重要です。代入前のものは変数名の一部になり、もう一方は値の一部になります。したがって、上記の行は基本的に という名前の変数を作成しますPathString
。つまり、末尾にスペース文字を付けます。この問題を解決するには、両方のスペースを削除してください。
もう1つはfor
環状線です。オプションのdelims
後にスペースが続きますが、これは無効であり、構文エラーの原因となります。繰り返しますが、スペースを削除してください。
別の種類の問題もあります。コマンドのsource unavailable
後の出力を省略していないため、ファイルがコピーされているにもかかわらず、ログに行が表示されます。これは、行の直後にコマンドを追加することで簡単に修正できます。ただし、次のようにすることもできます。robocopy
source unavailable
GOTO :EXIT
robocopy
if "%Source1%" == "0" (
echo *****source unavailable******* >>C:\Users\bibhukdas\Documents\New_folder\log.txt
) else (
robocopy.exe %Source1% %Destination1% *.doc /COPY:DAT /MINAGE:5 /R:1 >> C:\Users\bibhukdas\Documents\New_folder\log.txt
)
最後に、出力リダイレクトの数を減らすことで、スクリプトの保守性を向上させることができます。
リダイレクトは、次のように括弧で囲まれたコマンド ブロックに適用できます。
(
command1
command2
command3
...
) >outputfile
C:\Users\bibhukdas\Documents\New_folder\log.txt
したがって、この方法でリダイレクトを必要とするすべてのコマンドにリダイレクトを適用できます。
(
echo ******start****
echo ******POINT1****
echo "%PathString%"
for /f "tokens=1,2 delims=~" %%a in("%PathString%") do set Source1=%%a&set Destination1=%%b
echo ******POINT1****
if "%Source1%" == "0" (
echo *****source unavailable*******
) else (
robocopy.exe %Source1% %Destination1% *.doc /COPY:DAT /MINAGE:5 /R:1
)
) >>C:\Users\bibhukdas\Documents\New_folder\log.txt
ただし、for
ループはブロックの外に移動する必要があることに注意してください。これは%
、同じブロック内で (展開を使用して) 後で評価される変数を設定するためです。これは期待どおりに機能しません。これは、括弧付きブロックの効果の 1 つです。ここで遅延展開を使用できますが、この特定のケースでは、割り当てをブロックの外に移動する方がはるかに簡単です。
したがって、言及されたすべての問題に対処した後、スクリプトは次のようになります。
@echo off
SET PathString=C:\Users\bibhukdas\Documents\New_folder1~C:\Users\bibhukdas\Documents\New_folder
for /f "tokens=1,2 delims=~" %%a in("%PathString%") do set Source1=%%a&set Destination1=%%b
(
echo ******start****
echo ******POINT1****
echo "%PathString%"
echo ******POINT1****
if "%Source1%" == "0" (
echo *****source unavailable*******
) else (
robocopy.exe %Source1% %Destination1% *.doc /COPY:DAT /MINAGE:5 /R:1
)
) >>C:\Users\bibhukdas\Documents\New_folder\log.txt