バッチスクリプトを使用して、1つの文字列から2つのパラメータを取得しようとしています。この場合は文字列を取得し%%a
、コンマの配置場所(基本的にはコンマ区切り)に基づいて2つの部分に分割します。したがって、たとえば、%%a
値が「Parameter1、Parameter2」の単一の文字列は、2つの別々の文字列「Parameter1」と「Parameter2」に変換されます。これをバッチで行うにはどうすればよいですか?
for /f "delims=" %%a in (Text.txt) do (
echo %%a|find "#" >nul
if errorlevel 1 (
for /f "delims=, tokens=1,2" %%x in (%%a) do (
set "param1=%%x"
set "param2=%%y"
)
echo Param1: %param1%
echo Param2: %param2%
echo.
)
最初のループは、を含むテキストファイル内の行を無視すること#
です。
for /F "delims=, tokens=1,2" %%x in ("%%a") do (
set "part1=%%x"
set "part2=%%y"
)
編集:例を追加
@echo off
setlocal
for %%a in ("Parameter1,Parameter2") do (
echo Value of percent-percent-a: %%~a
for /F "delims=, tokens=1,2" %%x in ("%%~a") do (
set "part1=%%x"
set "part2=%%y"
)
)
echo Part1: "%part1%"
echo Part2: "%part2%"
出力:
Value of percent-percent-a: Parameter1,Parameter2
Part1: "Parameter1"
Part2: "Parameter2"
2回目の編集
すみません; この編集について事前にお詫び申し上げますが、投稿の誘惑に抵抗することはできません...
プログラミング言語に関連する質問を投稿するとき、特にバッチファイルの場合は、解決しようとしている実際の問題を非常に明確にして説明する必要があります。そうしないと、提案されたソリューションは、完全な仕様で記述された他の異なるコードよりも最悪に機能する可能性があります。
たとえば、質問が「テキストファイルを読み、を含む行を無視し#
、2つのコンマ区切り値を2つの別々の変数に取得したい」の場合、次のソリューションを投稿します。
@echo off
setlocal EnableDelayedExpansion
for /F "delims=, tokens=1,2" %%a in ('findstr /V "#" Text.txt') do (
set "param1=%%a"
set "param2=%%b"
echo Param1: !param1!
echo Param2: !param2!
echo/
)
また、「ソリューションのエラー」を報告するときは、報告しているエラーが自分で発生したものではないことに十分注意する必要があります。そうでなければ、あなたはあなたに無料で解決策を提供しようとして時間を無駄にする人々を悩ますだけです!:(
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加