Пакетный скрипт печатает только последнюю строку файла

Я пытаюсь получить текст из файла и отобразить его. Когда я печатаю значения, я получаю только последнюю строку файла два раза.

for /F %A in (E:\auto_s3\fol.txt) do (
setlocal
set m=%A 
setlocal
set k=%m:~1,-1%
echo %k%)

fol.txt

//LogShare/sapbatch01/audit-sapbatch01
//LogShare/sapdial18/audit-sapdial18

Какие символы вы пытаетесь удалить в начале и в конце каждой строки в вашем файле?

Squashman 11.04.2018 14:54
0
1
933
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Установка односимвольных переменных некрасива. Также понадобится enabledelayedexpansion

@echo off
setlocal enabledelayedexpansion
for /F %A in (E:\auto_s3\fol.txt) do (
   set mvar=%A 
   set kvar=!mvar:~1,-1!
   echo !kvar!
)

Чтобы запустить его в реальном пакетном файле, добавьте % This:

@echo off
setlocal enabledelayedexpansion
for /F %%A in (E:\auto_s3\fol.txt) do (
   set mvar=%%A 
   set kvar=!mvar:~1,-1!
   echo !kvar!
)

Примечание! что касается другого сценария для получения предыдущего дня и предыдущего дня, вот ссылка к ответу, который я создал для чего-то похожего.

разве это не% вместо!. получаю! квар! два раза. теперь он правильно читает файл

sasi 11.04.2018 14:28

Пожалуйста, возьмите 2-й пример и скопируйте в блокнот. Сохраните файл как filename.cmd, а затем запустите пакетный файл. Добавляйте паузу в самом конце файла при создании.

Gerhard 11.04.2018 14:33

PS! это должен быть !, а не %, так как расширение работает именно так. См. setlocal /? из cmdline.

Gerhard 11.04.2018 14:36

я создаю .bat файл, а не .cmd

sasi 11.04.2018 14:41

@sasi bat и cmd То же самое :)

Gerhard 11.04.2018 14:44

Позвольте нам продолжить обсуждение в чате.

Gerhard 11.04.2018 14:52

Идеально. Я правильно понял. Я новичок в пакетном сценарии. Большое спасибо :)

sasi 11.04.2018 15:01

а точнее bat и cmd немного разные

phuclv 11.04.2018 19:05

Другие вопросы по теме