Нужна помощь в использовании файлов .BAT для создания сложной файловой структуры с текстовыми документами.

Я пытаюсь создать пакетный файл(ы), который создает папку, содержащую 9 папок, причем каждая из этих 9 папок содержит текстовый файл, каждая из которых имеет похожий, но уникальный текст.

То, что мне удалось собрать, — это пакет, который создает 1 экземпляр текста.

rem Saved in D:\Temp\WriteText.bat
@echo off
@echo -ATTEDIT> ATTEDITChangeName.txt
@echo y>> ATTEDITChangeName.txt
@echo 36x24bdr>> ATTEDITChangeName.txt
@echo SUBTITLE>> ATTEDITChangeName.txt
@echo B209 11.5 TON BRIDGE ELEC LAYOUT>> ATTEDITChangeName.txt
@echo 612.9014,43.8533>> ATTEDITChangeName.txt
@echo 618.5063,35.8628>> ATTEDITChangeName.txt
@echo 109.9409,-6.7209>> ATTEDITChangeName.txt
@echo.>> ATTEDITChangeName.txt
@echo v>> ATTEDITChangeName.txt
@echo c>> ATTEDITChangeName.txt
@echo B209>> ATTEDITChangeName.txt
@echo B211>> ATTEDITChangeName.txt
@echo Next>> ATTEDITChangeName.txt

А также еще один пакет, который создает одну папку.

echo ========================
:: CREATE FILES START
    cd /d "Manuals\Desktop\410 SCRIPT\Test\"
    md XXX

:: CREATE FILES END
    echo Done!
    pause >nul

Мне нужна помощь с:

  1. Либо заставить их работать вместе, либо объединить их в один пакетный файл.
  2. Создавая пакетный файл папки, создайте 9 папок с уникальными именами внутри папки, которую он уже создал.
  3. Сделав так, чтобы каждая из этих 9 папок имела свой собственный файл .txt, КОТОРЫЙ в конечном итоге будет иметь немного разное содержимое в каждой соответствующей папке.

Итерации текста

Единственный текст, который необходимо изменить, - это текст, который в настоящее время гласит: «B209 11,5 TON BRIDGE ELEC LAYOUT». В каждой папке должно быть что-то свое.

Это для работы, и, честно говоря, я в тупике. Любая помощь будет принята с благодарностью.

Спасибо

ИЗМЕНИТЬ:

  • B209 СХЕМА ЭЛЕКТРОПИТАНИЯ МОСТА 11,5 ТОНН

  • СХЕМА ПАНЕЛЕЙ B209 11,5 ТОНН

  • B209 11,5 ТОН МОСТ ЭЛЕКТРИЧЕСКОЕ УПРАВЛЕНИЕ PWR

  • B209 11,5 ТОН ЭЛЕКТРООБОРУДОВАНИЯ POWER PWR

  • B209 ПРИВОД 11,5 ТОН 460 В ПЕРЕМЕННОГО ТОКА

  • B209 11,5-тонный ПЛК, МОД. 1 и 2

  • B209 ПЛК 11,5 ТОН, МОД. 3 и 4

  • B209 ПЛК 11,5 ТОН, МОД. 5 и 6

  • B209 11,5 ТОН МОД 7 и 8


person user2813209    schedule 30.06.2015    source источник


Ответы (1)


К сожалению, вы не очень откровенны о характере имен ваших подкаталогов или о том, откуда появляется этот вариант текста.

РЭМ

@ECHO OFF
SETLOCAL
SET "parent=u:\Manuals\Desktop\410 SCRIPT\Test"
FOR %%d IN (xxx yyy zzz) DO (
 MD "%parent%\%%d" 2>nul
 >"%parent%\%%d\ATTEDITChangeName.txt" (
  FOR %%t IN (-ATTEDIT y 36x24bdr SUBTITLE) DO ECHO(%%t
  FOR /f "tokens=1,*delims==" %%s IN (q31147990.txt) DO IF /i "%%s"=="%%d" ECHO(%%t
  FOR %%t IN (
    "612.9014,43.8533" "618.5063,35.8628" "109.9409,-6.7209" 
    "" "v" "c" "B209" "B211" "Next") DO ECHO(%%~t
 )
)
GOTO :EOF

Этот код должен генерировать каталоги, назначенные %%d, и читать файл, который я назвал q31147990.txt и имеет foemat

xxx=B209 11.5 TON BRIDGE ELEC LAYOUT
yyy=D209 11.5 TON BRIDGE ELEC LAYOUT
zzz=R209 11.5 TON BRIDGE ELEC LAYOUT

То есть имя каталога = текст варианта.

При переосмыслении вот лучшая версия:

РЭМ

@ECHO OFF
SETLOCAL
SET "parent=u:\Manuals\Desktop\410 SCRIPT\Test"
FOR /f "tokens=1,*delims==" %%d IN (q31147990.txt) DO (
 MD "%parent%\%%d" 2>nul
 >"%parent%\%%d\ATTEDITChangeName.txt" (
  FOR %%t IN (-ATTEDIT y 36x24bdr SUBTITLE) DO ECHO(%%t
  ECHO(%%e
  FOR %%t IN (
    "612.9014,43.8533" "618.5063,35.8628" "109.9409,-6.7209" 
    "" "v" "c" "B209" "B211" "Next") DO ECHO(%%~t
 )
)
GOTO :EOF

Этот второй сценарий считывает каждую строку q31147990.txt, назначая часть перед = на %%d, а часть после на %%e. Затем он создает каталог и генерирует файл со всем необходимым содержимым. Обратите внимание, что существуют две разные формы цикла for. Поскольку первый цикл не создает строки из строки, содержащей разделители (пробелы и запятые), кавычки не требуются и, следовательно, %~t не требуется. Во втором цикле некоторые строки содержат запятые, поэтому каждая строка равна "quoted", а кавычки удаляются с помощью ~ в %~t.

Обратите внимание, что "" — пустая строка, поэтому используется echo(. Хотя традиционно символ, следующий за echo, представляет собой пробел, существует ряд символов, которые могут следовать за o и давать практически такой же результат. Из них ( особенно полезен, потому что echo %something%, где something не определено, сообщит echo is on/off, а echo(%something%, где something не определено, создаст новую строку.

person Magoo    schedule 01.07.2015
comment
Позвольте мне попытаться объяснить немного больше. Текст заголовка (например, B209 11,5 TON BRIDGE ELEC LAYOUT) отличается для каждой из 9 подпапок. Я отредактировал свой исходный пост, чтобы включить их. Названия 9 подпапок одинаковы. См. Ссылку на гязо, чтобы узнать, что это такое. - person user2813209; 01.07.2015
comment
Это скриншот файловой структуры. Это заголовки подпапок и конечные результаты содержимого одного текстового файла. Кстати, файл журнала LT TW не имеет значения. gyazo.com/c3df0b64ab208d422eac4f1bb80ee97d - person user2813209; 01.07.2015
comment
Кажется, я понимаю, как работает ваш код, но он не дает никаких результатов. Я сделал текстовый файл, который он требует. Есть ли какой-либо другой шаг, который я пропустил? - person user2813209; 01.07.2015