2016-09-07 3 views
0

次のバッチファイルを使用して、複数のドライブ上の不要なファイルを削除します。ディレクトリ変数 - windows 7でバッチ削除

set /p DELPATH=<"C:\DELETE-ALL.txt" 

for /f "usebackq delims=;" %%i in ("C:\DELETE-ALL.txt") do @del /q "D:\HFI\%DELPATH%\%%i" > C:\DELETE-ALL-4.txt 2>&1 
... same command for other local and network drives. 

DELETE-ALL.txtは、次のようになります。

mydirectory 
TEST.xlsx 
TEST2.xlsx 

これは素晴らしい作品。 1つのディレクトリにあるファイルを削除します。しかし、今私はもっとそれをする必要があります。私はバッチファイルを別のディレクトリのファイルを削除する必要があります。だから、その場でディレクトリをどのように変更するかということになる。

ご協力いただきますようお願い申し上げます。

+2

あなたは '@del/q" D:\ HFI \ D:\ mydirectory \ D:\ mydirectory "'に展開されるコマンドが動作すると思いますか? – SomethingDark

+0

ありがとうございます。修正されました。 – joehua

+0

[これについて](http://stackoverflow.com/questions/38911430/rename-files-using-wildcard-paths/38941888#38941888)を見てみたいかもしれません。ディレクトリ/ファイル名(ワイルドカードを含む)を入れ、そのコードで名前を変更することができます。単に 'ren'を' del'に変更すれば、あなたの目的には大丈夫です。それはかなり大きいですが、それは私にとって素晴らしい作品です。最後のin/excludeサブフォルダにコメントがあることに注目してください。 – geisterfurz007

答えて

0

答えは私が思ったよりも簡単だったことが判明しました。私の最初の質問はファイルを削除することでしたが、私は名前を変更するためにそれを働かせました。ほとんど変更を加えずに削除することができます。

@(for /f "tokens=1,2 delims=;" %%A in ('"TYPE C:\RENAME-ALL.txt"') do (
@echo "%%A" | find /i "\" 
    @if errorlevel 1 (
    RENAME "%%A" "%%B" >> C:\RENAME-ALL-4.txt 2>&1 
) ELSE (
CD /D D:\mydirectory\%%A 
) 
) 
) 

スクリプトは「\」を探します。見つかった場合は、その行がディレクトリであるとみなし、 "D:\ mydirectory \"をパス接頭辞として使用して対応するディレクトリに変更します。それ以外の場合は、行にファイル名が含まれているとみなします。ファイル名にバックスラッシュは許可されていないので、前提は安全です。

これは他の人に役立つことを願っています。

0

ここで私はあなたの評判が低いとコメントできないので、私はあなたに答えます。

これを行うには、PowerShellまたはpythonなどのプログラムスクリプトを使用することを強くお勧めします。 Windowsバッチを使用すると、良い方法を見つけるのにもっと時間がかかり、少し複雑なミッションを行う方法がないかもしれません。

関連する問題