Чтобы понять ваш код, я сначала разобью его на логику, а затем попытаюсь решить.Дайте мне знать, если я пропущу детали ...
Set num var to 0
Begin :Loop
set num var to its current value ::NOT NEEDED - You've specified this prior to the GOTO
increment num var by +1
if myfolder\at* file exists then read at%num% and find a string then output that line to %tmp%\1.txt ::Need quotations on file location.
set F var to the line stored in %tmp%\1.txt
set F="%%F: =%%" ::Please explain what you are trying to do with this command.
set F to start on 10th character and remove the last 11 characters from the line.
echo the variable
If it doesn't exist, exit, but if it does return to :Loop
Вы должны сказать нам, что вы пытаетесь.Если это так же просто, как сохранить переменную из выходного текстового файла, set F=<file.txt
будет работать.Если этого не произошло, то что-то случилось до этой команды.Тем не менее ... что такое set F="%%F: =%%"
?
Если вы не используете переменную цикла FOR, нет необходимости использовать %% на каждом конце переменной.
Если бы это былоЦикл FOR выглядит следующим образом:
SETLOCAL ENABLEDELAYEDEXPANSION
set num=1
:START
IF NOT EXIST "myFolder\at%num%.txt" (GOTO:EOF)
FOR /F "USEBACKQ tokens=*" %%A IN (`TYPE "myFolder\at%num%.txt" ^| FIND /i "string"`) DO (
PAUSE
SET var=%%A
ECHO !var!
PAUSE
SET var=!var: =!
ECHO !var!
PAUSE
SET var=!var:~10,-11!
ECHO !var!
PAUSE
SET /a num=!num!+1
ECHO !num!
PAUSE
)
GOTO:START
Хорошая практика - проверять, работают ли команды, например SET, вставлять ECHO в переменную и PAUSE сразу после каждого раза, когда вы полагаете, что переменная должнабыть изменен.Это позволит отследить, что изменилось в переменной, чтобы вы могли увидеть, была ли ваша команда правильной и были ли внесены изменения.