Удалить первые 3 символа в var в пакетном файле? - PullRequest
9 голосов
/ 21 февраля 2012

Как мне это сделать? Я попробовал:

set /p var=""
set var=%var:~3%
echo %var%

Например, если я наберу "Hello World", то должно появиться "lo World".

Извините, я был слишком расплывчатым. Этот код на самом деле не код, но это:

@echo off
setlocal EnableDelayedExpansion
set /p file=""
set cnt=0
for /F "delims=" %%j in (%file%.txt) do (
  set /A cnt+=1
  set line!cnt!=%%j
)
set cde=0
:code
set /a cde+=1
set line=!line%cde%!
if %line:~0,9% == err echo.%line:~3%
goto code

Я просто пытался сделать его короче, показывая ошибку.

1 Ответ

8 голосов
/ 21 февраля 2012

Я только что попробовал, и это работает так, как вы ожидаете.Что вы получаете?

C:\>type test.bat
set /p var=""

set var=%var:~3%

echo %var%
C:\>test

C:\>set /p var=""
Hello World

C:\>set var=lo World

C:\>echo lo World
lo World

C:\>

Итак, похоже, вам нужны, возможно, две вещи: 1) Какое-то условие выхода из вашего второго цикла.Между меткой :code и goto code, когда выполняется условие соответствия (т. Е. if %line:~0,3% == err). Не зная, что требуется от вашего кода, я бы поместил что-то вроде

if %line:~0,3% == err echo.%line:~3% & pause & exit

Это приостановит и завершит работу, когда найдет совпадающую строку

2) Какое-то условие выхода, если вы достигли конца строк и не было совпадения.Я подозреваю, что именно это и вызывает ошибку, которую вы видите, поскольку ваш входной файл, вероятно, не удовлетворяет этому условию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...