次のようなファイルを取得するスクリプトの書き方を考えています:
img123
img123back
img124
img125
img125back
img126
img127
「back」という単語を含むファイルと同じ番号を持つすべてのファイルを別のフォルダーに移動する必要があります。結果の例:
img123
img123back
img125
img125back
答え1
あなたは/fの場合出力を反復するディレクトリコマンドをソースディレクトリに対して実行します。条件文を使うこともできます。もしロジックと for ループ変数の置換を使用して、単一の文字列 "back" を含むファイルが存在することを確認します。存在する場合は、そのファイルと、文字列を除いた同じ名前のファイルをコピーします。
@ECHO ON
SET "srcPath=C:\Source\Path"
SET "destPath=C:\Copy\Path"
SET "keyword=back"
FOR /F "TOKENS=*" %%A IN ('DIR /B /A-D "%srcPath%\*"') DO (
IF EXIST "%%~DPA%%~NA%keyword%%%~XA" XCOPY /Y /F "%%~DPA%%~NA%keyword%%%~XA" "%destPath%\" & XCOPY /Y /F "%%~FNXA" "%destPath%\"
)
PAUSE
EXIT
その他のリソース
- /Fの場合
- ディレクター
バッチ置換 (FOR /?)
さらに、FOR 変数参照の置換が強化されました。次のオプションの構文を使用できるようになりました。
%~I - expands %I removing any surrounding quotes (") %~fI - expands %I to a fully qualified path name %~dI - expands %I to a drive letter only %~pI - expands %I to a path only %~nI - expands %I to a file name only %~xI - expands %I to a file extension only
- リダイレクション