あるフォルダーから別のフォルダーにファイルを移動するバッチファイルがあります。バッチファイルは別のプロセスによって生成されます。
移動する必要があるいくつかのファイルには、文字列「%20」が含まれています。
move /y "\\myserver\myfolder\file%20name.txt" "\\myserver\otherfolder"
次の名前のファイルを見つけようとするため、これは失敗します。
\\myserver\myfolder\file0name.txt
%
を無視する方法はありますか?パーセント記号(%%
)を2倍にしたり、/
または^
(キャレット)でエスケープしたりするなど、これを回避するために生成されたファイルを変更できません。
この場合、%%
を使用する必要があります。通常、^
(キャレット)を使用することで問題は解決しますが、%
の場合は、倍にする必要があります。
%%1
または%%i
またはecho.%%~dp1
の場合、%
はコマンドまたは変数からの入力を示すため(%
;で囲まれている場合)、%variable%
)
必要なものを実現するには:
move /y "\\myserver\myfolder\file%%20name.txt" "\\myserver\otherfolder"
これが役に立てば幸いです!
バッチファイルでは、二重パーセント記号(%%)を使用してパーセント記号を「エスケープ」できます。これにより、コマンドライン内で単一のパーセント記号が使用されます。から http://www.robvanderwoude.com/escapechars.php
私は部分的な解決策を働いていると思います。名前に「%20」文字列が含まれるファイルのみを転送し、より広範なソリューションを探していない場合は、2番目のバッチファイルで、2番目のパラメーターとして%% 2を使用して最初のバッチファイルを呼び出すことができます。このように、プログラムがテキスト名の%2に到達したときに2番目のパラメーターをフェッチしようとすると、%2がエスケープされた%2に置き換えられ、ファイル名は変更されません。
これがうまくいくことを願っています!