2017-12-12 3 views
1

だから私は特定のアクションが私のホームサーバー上で完了しているとき、私に通知を送信するようにバッチスクリプトを使用しています。問題は、アクションの1つのセットは私が変更できない名前の形式を持っていますが、私は名前が追加のコンテンツなしできれいにやりたいと思っています。は、どのように私は、その文字の後に特定の文字までの文字列、および何を解析することができます

例えば、私が見てみたいこと:このファイルは、私が見ています何

を処理行われます:このファイルは、処理の行われている[追加のファイル情報]

私が使用していたバッチ変数抽出したファイル名は次のとおりです。SET PNAME =%*

だから私の質問は、缶がそれの後の文字列と、すべてで[最初のを除外するために解析するために、その変数を変更する方法はありますか?

+1

はい。 'FOR/F'コマンドと' DELIMS'オプションを使って変数を分割することができます。 – Squashman

+0

その意味がわかりません。 CMDプロンプトと種類を開き –

+0

:? '/ FOR' 'FOR'コマンドのヘルプを読むには。 – Squashman

答えて

2

は、それが後でコマンド

またはfor /fのように処理され&rem[後のものに置き換えられ、この

set "var=This File Is Done Processing [additional file info]" 
set "var=%var:[=&rem %" 
set var=%var% 

を試してみてください。

set "var=This File Is Done Processing [additional file info]" 
for /f "tokens=1* delims=[" %%# in ("%var%") do (
    set "var=%%#" 
) 
echo %var% 
+0

ありがとうございました。 "var"を "PName"で切り換えました。 –

+2

あなたはこのエラーを得る他の賢明な人の後にスペースが必要です。おかげ - – Squashman

+0

@Squashman file.' '「remadditional」は、内部または外部コマンドとして認識されない、操作可能なプログラムまたはバッチ。 – npocmaka

2

つのオフに構築し、他のオプション@SETコマンドでnpocmakaの& REMトリック。

set "pname=This File Is Done Processing [additional] [file]" 
(set "pname=%pname:[=" & set /p "=%")<nul >nul 

この方法でも可能ですが、ピリオドとして名前が付けられた余分な変数が作成されます。

set "pname=This File Is Done Processing [additional] [file]" 
set "pname=%pname:[=" & set ".=%" 

これらの背後にあるアイデアは、コードが1行少ないことです。

関連する問題