バッチ 遅延環境変数について。その2
バッチファイルで、所定のフォルダ内にある、アクセスファイルをコピーする処理を書きましたが、、、意外なところではまりました。
まずはコード。
echo off
set fromPath=適当に
set toPath=適当にset batDir=%~dp0
rem variable
set dt=%date%set FName=log_%dt:~4,2%%dt:~7,2%%dt:~10,4%.txt
xcopy %fromPath% %toPath% /T /Y
setlocal enabledelayedexpansion
cd /d %fromPath%echo backup start %date% %time% >> %batDir%\%FName%
for /R %%i in (*.accdb) do (
set testStr=%%i
set testStr=!testStr:%fromPath:~2,3%=toPath!
echo from %%i
echo fromPath %fromPath%
echo toPath %toPath%
echo to !testStr!
CALL copy "%%i" "%%testStr%%"
)echo backup end %date% %time% >> %batDir%\%FName%
こんな感じで書いて、パスを割り当てたら自分のマシンではうまく行ったのに、試験環境で動かしたらエラー、、、。原因はパスに半角スペースが入っていたからというしょうもない落ちでした。で、このバッチではフォルダ構造をそのままにコピーしようとしていたので、フォルダにスペースが入ることを考慮すると、、、。このやり方じゃだめですね、、、。半角スペースを読んでもいいように、ダブルクォーテーションで囲むと、今度は、遅延環境変数の文字列置換処理で、ダブルクォーテーションが文字列の一部になり、パスの書き換えがうまくいかず、なんかもどかしい感じでうまく行きませんでした。
結局フォルダをまるっとコピーでいいや、という話になったんだけど、なんかくやしい。だれかシンプルな解決策があったら教えてください。