1

以下のコードは、ファイルからファイル名の拡張を削除します。しかし、私はそれがどのように行われるのか理解できません。現在のディレクトリ内のすべてのファイルをベア形式で一覧表示するだけです。しかし、その後、私はちょっと迷っています。誰かが私を助けてくれませんか?

@echo off
cd %1
if exist filelisting.txt del filelisting.txt
for /F "delims=" %%j in ('dir /A-D /B /O:GEN') do echo %%~nj >> filelisting.txt
4

1 に答える 1

1

最初にファイルは拡張子でソートされ、次にファイル名とフォルダーでグループ化されます(これは冗長です)/O:GEN/Bフルパスの場合は除外され、フォルダ/A-Dの場合は除外されます。FOR /F %%J IN ('command') DO (..)コマンド出力のすべての行で%%J 変数に設定されます。with%%~nJは拡張子なしのファイル名のみが取得されます。いくつかのリンクがあります。

  1. DIR
  2. /Fの場合
  3. ファイル属性

編集:例:

@echo off
echo %~0    -   expands %i removing any surrounding quotes (")
echo %~f0   -   expands %i to a fully qualified path name
echo %~d0   -   expands %i to a drive letter only
echo %~p0   -   expands %i to a path only
echo %~n0   -   expands %i to a file name only
echo %~x0   -   expands %i to a file extension only
echo %~s0   -   expanded path contains short names only
echo %~a0   -   expands %i to file attributes of file
echo %~t0   -   expands %i to date/time of file
echo %~z0   -   expands %i to size of file
echo %~$PATH:0  -   searches the directories listed in the PATH environment variable and expands %i to the fully qualified name of the first one found.
echo %~dp0  -   expands %i to a drive letter and path only
echo %~nx0  -   expands %i to a file name and extension only
echo %~fs0  -   expands %i to a full path name with short names only
echo %~dp$PATH:0    -   searches the directories listed in the PATH environment variable for %i and expands to the drive letter and path of the first one found.
echo %~ftza0    -   expands %i to a DIR like output line
pause

このsa.batファイルを保存します。%0は呼び出された.batファイルへのパスです。これによりすべての%〜0操作が一覧表示されます。%~片側で囲まれた変数(バッチファイル引数%0、%1..またはFOR変数)でのみ機能します。

于 2012-12-02T09:33:31.293 に答える