.batファイルを実装しようとして問題が発生しましたが、答えが見つかりませんでした。システムパスなしですべてのフォルダ名を表示しようとしています。
私はそのようなことを試しましたが、うまくいきません。
@echo off
set back=%cd%
for /d %%I in (C:\test\test*) do (
cd %%I 2>&1 >nul
echo %%~nxI:~10,5
)
cd %back% 2>&1 >nul
解決策はありますか? :-)
あなたの答えをありがとう。これが私のために働いた解決策です:
@echo off
setlocal EnableDelayedExpansion
for /d %%I in (C:\test\testV*) do (
set current_folder=%%I
set test_version=!current_folder:~12,6!
set test_version=!test_version:_=.!
echo !current_folder!
echo !test_version!
)
部分文字列は通常の変数でのみ機能し、メタ変数では機能しません。
コンテンツを変数にコピーします。これは(コードブロック)内にあるため、必要です DelayedExpansion
疑似呼び出しメソッドの使用:
:: Q:\Test\2018\07\26\SU_1345000.cmd
@echo off
PushD .
for /d %%I in (A:\test\test*) do (
Set "Dir=%%I"
Call echo %%Dir:~10,5%%
)
PopD
このようなツリーでは:
> tree
└───test
├───test1
├───test2
└───test3
それが戻る
> Q:\Test\2018\07\26\SU_1345000.cmd
st1
st2
st3
オフセットが正しくなかった可能性があります。
dir /ad /b C:\test\test*
を使用できます
@echo off
set back=%cd%
for /d %%I in (C:\test\test*) do (
dir /ad /b %%I
)
cd %back% 2>&1 >nul
このスクリプトは、フォルダー内のすべてのフォルダー名を出力しますC:\test\test*