2016-04-15 26 views
0

古いファイルを削除するためにforfilesツールと同じパスを使用するように、ディレクトリ文字列の最後のスラッシュを削除したかったのです。私は解決策を試しましたhereしかし、それは動作しませんでした。スクリプトは結果をテキストファイルに保存します。ディレクトリーが誤った形式であるため、forfilesは機能しません。 最後のバックスラッシュを削除するだけです。"C:\Database\Backup\"ディレクトリ文字列の最後のスラッシュをバッチファイルで部分文字列にする方法はありますか?

以下の実行可能コードは私が試みたコードです。問題は、これはあなたが常にset "variable=value""variable=value"ペアで引用されなければならない理由の良い例です"C:\Database\Backup\" :~0,-1代わり"C:\Database\Backup"

set BACKUP_DIR="C:/Database/Backup/" 
set LOG_FILE=%BACKUP_DIR%log_file.txt 
if not exist BACKUP_DIR mkdir %BACKUP_DIR% 
set BACKWARD_SLASH_DIR=%BACKUP_DIR:/=\% 
echo %BACKWARD_SLASH_DIR% > %LOG_FILE% 
set DELETE_DIR=%BACKWARD_SLASH_DIR%:~0,-1% 
echo %DELETE_DIR% >> %LOG_FILE% 
forfiles -p %DELETE_DIR% -s -m *.* -d -1 -c "cmd /c echo Deleted @file" >> %LOG_FILE% 
forfiles -p %DELETE_DIR% -s -m *.* -d -1 -c "cmd /c del @path" 
+4

%DELETE_DIR =%BACKWARD_SLASH_DIR%:〜0%-1%%〜シンボル数が多い場合は、後で削除してください。 – TessellatingHeckler

+0

これを実行すると、出力は「C:\ Database \ Backup \」になります。 – wondie

+0

Are出力は '' C:\ Database \ Backup \ ''ではないことを確かめ、後続の引用符 '' 'を削除していますか?それが今私が期待していることです。 '〜0、-2%'を試してください... – TessellatingHeckler

答えて

1

の出力ライン6、です。そうすれば、引用符は変数の値の一部ではなく、必要に応じて、"%variable%"を明示的に引用することができます。また、あいまいさを取り除き、値の最後に間違って末尾に空白が追加されないようにします。実際に貼り付けたコードには、set BACKWARD_SLASH_DIR=%BACKUP_DIR:/=\%行の最後に余分なスペースがあります。

関連する問題