2016-06-01 20 views
1

さて、バッチで値としてフォルダの名前を取得しようとしています。フォルダには、次のようになります。フォルダー名の名前をアンダースコアで区切ってバッチで値にする方法は?

John_1

私は名前だけアンダースコアで区切られジョン部分の最初の部分を取得しようとしています。

誰でも解決できますか?

おかげ

バッチの中で最も列処理と同様

答えて

3

は、FOR /Fコマンドはdelims引数を使用して、これを行うことができます。

ここで、希望する部分は%name%変数になります。

通常、変数には解析する文字列がありますが、ソースはありません。変数で上記を実行するには、変数echoを使用できます。何らかの理由であなたは、文字列の第二の部分を取得したい場合

set sz=John_1 
for /f "delims=_" %%a in ('echo %sz%') do set "name=%%a" 

最後に、FORtokens=引数を使用することによって、それを保持するために別の変数を割り当てることができます。

set sz=John_1 
for /f "tokens=1,2 delims=_" %%a in ('echo %sz%') do (set "name=%%a" & set "number=%%b") 

FORバッチ言語の中で最も強力なコマンドの一つです。使用可能なオプションの完全なリストについては、help forを実行してください。

+0

@Stephanが示唆しているように、第2変数 '%% b' – Stephan

+0

を使用するには' 'tokens = 1、*' "のようなものが必要です。' 1,2'ではなく '1、*'別のアンダースコアが含まれていると分割されない –

関連する問題