文字列内のすべての文字をループしようとしています。ただし、次の文字列を使用して文字列内のすべての単語をループする方法しか知りません。
(set /P MYTEXT=)<C:\MYTEXTFILE.txt
set MYEXAMPLE=%MYTEXT%
for %%x in (%MYEXAMPLE%) do (
ECHO DO SOMTHING
)
単語ごとではなく文字ごとに機能するように構成するにはどうすればよいですか?
文字列内のすべての文字をループしようとしています。ただし、次の文字列を使用して文字列内のすべての単語をループする方法しか知りません。
(set /P MYTEXT=)<C:\MYTEXTFILE.txt
set MYEXAMPLE=%MYTEXT%
for %%x in (%MYEXAMPLE%) do (
ECHO DO SOMTHING
)
単語ごとではなく文字ごとに機能するように構成するにはどうすればよいですか?
これは、文字列内のすべての文字をループする単純で直接的な方法です。
@echo off
setlocal ENABLEDELAYEDEXPANSION
set /P mytext= < MYTEXTFILE.txt
echo Line is '%mytext%'
set pos=0
:NextChar
echo Char %pos% is '!mytext:~%pos%,1!'
set /a pos=pos+1
if "!mytext:~%pos%,1!" NEQ "" goto NextChar
私の知る限りFOR
、文字単位の反復を行うことはできません - 可能な回避策は、次のようなループを構築することです:
@ECHO OFF
:: string terminator: chose something that won't show up in the input file
SET strterm=___ENDOFSTRING___
:: read first line of input file
SET /P mytext=<C:\MYTEXTFILE.txt
:: add string terminator to input
SET tmp=%mytext%%strterm%
:loop
:: get first character from input
SET char=%tmp:~0,1%
:: remove first character from input
SET tmp=%tmp:~1%
:: do something with %char%, e.g. simply print it out
ECHO char: %char%
:: repeat until only the string terminator is left
IF NOT "%tmp%" == "%strterm%" GOTO loop
注:質問のタイトルには、「変数文字列のすべての文字」をループしたいことが記載されています。これは、コマンド(set /P MYTEXT=)<C:\MYTEXTFILE.txt
が C:\MYTEXTFILE.txt
. 代わりにファイル内のすべての行をループしたい場合、解決策はもう少し複雑になるため、別の質問を開くことをお勧めします。