1

私の Windows バッチ ファイルは、ファイル名を読み取り、ファイル名の 2 番目から 5 番目の文字に従って名前が付けられたディレクトリを作成することになっています。

for %%f in (.\*.txt) do (
set string=%%~nf
mkdir %string:~2,5%     
)

ただし、'string' の値は更新されません。つまり、ループの各ステップで同じです。どうすれば更新できますか?

これはコマンド出力です:

>for %f in (.\*.txt) do (
set string=%~nf
 mkdir le3
)

>(
set string=file1
 mkdir le3
)

>(
set string=file2
 mkdir le3
)
A subdirectory or file le3 already exists.

>(
set string=file3
 mkdir le3
)
A subdirectory or file le3 already exists.
4

2 に答える 2

0

ほとんどの場合、最後の試行で不要な感嘆符がいくつかあります。

SETLOCAL ENABLEDELAYEDEXPANSION
for %%f in (*.txt) do (
    set string=%%~nf
    if not exist "!string:~2,5!\" mkdir "!string:~2,5!"
)
于 2016-09-28T08:47:11.493 に答える