0

現在のフォルダ内のファイル名のサブストリングを取得しようとしています。後でこれらを引数として特定のコマンドに渡しますが、今のところ、エコーを機能させることさえできません。

setlocal EnableDelayedExpansion

for %%f in (*.mvx) do (
  set a=%%f
  echo %a%
  echo %%a%%
  echo %a:~3,8%
)
endlocal
pause

次のような結果が得られます。

C:\1>(
set a=xx-20121213-mvl-0005.mvx
 echo
 echo %a%
 echo ~3,8
)
ECHO is on.
%a%
~3,8

最後のものは、ケースに対して「20121213」を返すことになっています。

4

1 に答える 1

1

for変数をループに設定しているため、変数をエコーするには遅延展開を使用する必要があります。

あなたはすでにそれを有効にするための行を含めました、あなたはただあなた%の'を'!に変える必要があります

setlocal EnableDelayedExpansion

for %%f in (*.mvx) do (
  set a=%%f
  echo !a!
  echo !a:~3,8!
)
endlocal
pause

アップデート

スクリプト全体を1行のcmdコマンドに配置するには、次のコマンドを使用できます。

cmd /v:on /c "for %f in (*.mvx) do set a=%f && echo !a! && echo !a:~3,8! && pause"
于 2012-12-17T08:53:50.257 に答える