バッチファイルに次のForループがあります。
for /R c:\test\src %%i IN (*.*) DO (
MOVE %%i C:\test\destination
ECHO %%i
exit
)
ECHOの結果は、ファイルパス全体を出力します。例:C:\ Foldername\Filename私はFilenameのみをECHOアウトする必要があります。ファイル名?ありがとう!
コマンド拡張機能が有効な場合(Windows XP以降、大体))、構文%〜nF(Fは変数、〜nはその名前の要求)を使用して、ファイル名。
FOR /R C:\Directory %F in (*.*) do echo %~nF
ファイル名のみをエコーする必要があります。
または、%〜Fだけで完全なパスと完全なファイル名が表示されます。
たとえば、現在のディレクトリにすべての* .axファイルを登録する場合...
FOR /R C:. %F in (*.ax) do regsvr32 "%~F"
これはWin7(64ビット)で非常にうまく機能します:-)
私は少し遅れていますが、これを使用しました:
dir /B *.* > dir_file.txt
次に、単純なFORループを作成してファイル名を抽出し、使用できます。例えば:
for /f "tokens=* delims= " %%a in (dir_file.txt) do (
gawk -f awk_script_file.awk %%a
)
または、後で使用するためにそれらをVars(!N1!、!N2!..!Nn!)に保存します。例えば:
set /a N=0
for /f "tokens=* delims= " %%a in (dir_file.txt) do (
set /a N+=1
set v[!N!]=%%a
)
ファイル名(のみ)と拡張子の両方を残したい場合は、%~nxF
:
FOR/R C:\ Directory%F in(*。*)do echo%〜nxF