Мне дали скрипт .BAT, и я получил сообщение об ошибке «%% X». Неожиданно кто-нибудь может сказать мне, что я делаю неправильно? - PullRequest
0 голосов
/ 29 апреля 2019

Короче говоря, этот код мне предоставил мой профессор, и я получаю сообщение об ошибке, в котором говорится "%% X", а в выводе - %% X неожиданная ошибка.

SETLOCAL ENABLEDELAYEDEXPANSION

SET CURRENT_DIR=%CD%
SET DIR_NAME=%CURRENT_DIR%\CIS153
SET COUNTER=1

MKDIR %DIR_NAME%

FOR /F "DELIMS=" %%X IN (MyData.txt) DO (
    ECHO %%X > myFile!COUNTER!.txt
    SET /A COUNTER=!COUNTER!+1
)

Я ожидаю, что код сделает каталог CIS153 и на основе содержимого из MyData.txt создаст новый каталог и запишет его во весь новый файл.

1 Ответ

0 голосов
/ 29 апреля 2019

@ Магу прав.Этот скрипт должен быть в файле.Используйте Notepad.exe или другой редактор для создания файла.

Также необходимо добавить некоторые цитаты.Используйте кавычки вокруг команды SET, чтобы гарантировать, что невидимые символы, такие как SPACE и TAB, не находятся в конце значения.

Кроме того, пути должны быть заключены в кавычки, поскольку они могут содержать пробел или другие специальные символы.

Проверка наличия каталога перед его созданием позволит избежать появления сообщения об ошибке, если он уже существует.

Наконец, я отмечаю, что, хотя он и создает каталог, нет ничего, что устанавливает его в качестве текущегокаталог.В результате файлы «myfile * .txt» будут созданы в текущем каталоге, а не во вновь созданном каталоге.

=== CIS153.bat

SETLOCAL ENABLEDELAYEDEXPANSION

SET "CURRENT_DIR=%CD%"
SET "DIR_NAME=%CURRENT_DIR%\CIS153"
SET "COUNTER=1"

IF NOT EXIST "%DIR_NAME%" (MKDIR "%DIR_NAME%")
rem CD "%DIR_NAME%" ???

FOR /F "DELIMS=" %%X IN (MyData.txt) DO (
    ECHO %%X > myFile!COUNTER!.txt
    SET /A COUNTER=!COUNTER!+1
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...