Я создал скрипт, который смотрит на папку, а затем создает новый выходной файл с информацией, как она идет

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

но я хочу добавить больше информации в эти файлы данных

список файлов rem в папках в ts_users и вывод в файл 3 значения, папка, имя файла
rem без типа и полного имени файла

del c:\ts_users\files_list.txt c:\ts_users\filelocations.txt c:\ts_users\folder_list.txt

cd c:\ts_users\output

for /r %% a in (*) выводит эхо %% a >> c:\ts_users\files_list.txt

FOR /F "токены = 4,5 delims =\" %% a in (c:\ts_users\files_list.txt) do @echo %% a %% b %% ~ nb >> c:\ts_users\filelocations.txt

выходной файл выглядит так

201303051158 eu1ptsw001.out eu1ptsw001

Эту информацию я хотел бы добавить к каждой строке в файлах данных.

Строка в файле данных выглядит следующим образом

USERNAME SESSIONNAME ID ГОСУДАРСТВЕННОЕ ВРЕМЯ ВРЕМЕНИ ВОЙТИ ВРЕМЯ

mehmet.togrul rdp-tcp # 0 2 Актив 41 05.03.2013 05:05

thabo.lesame rdp-tcp # 23 3 Активно 6 03.05.2013 05:55

но я хочу, чтобы это выглядело так (исключая 1-ю строку)

201303051158 mehmet.togrul rdp-tcp # 0 2 Актив 41 03.05.2013 05:05 eu1ptsw001

201303051158 thabo.lesame rdp-tcp # 23 3 Активно 6 03.05.2013 05:55 eu1ptsw001

использование командного файла лучший способ сделать это?

1 ответ1

1

Как насчет

setlocal enabledelayedexpansion

for /r %%a in (*) do echo %%a >>c:\ts_users\files_list.txt

FOR /F "tokens=4,5 delims=\" %%a in (c:\ts_users\files_list.txt) do (
     set myOutput=%%a %%b %%~nb
     ::or whatever %%X you want
)

Затем в строке, которую вы используете, чтобы отобразить всю эту информацию в файлах журнала:

echo %whatever_you_are_already_using% %myOutput% >> logfile.extension

Я не уверен, действительно ли нужно enabledelayedexpansion , но я думаю, что циклы for имеют свои собственные области действия в пакетном режиме, так что это эквивалентно использованию static var= . Выпуск set /? Конечно, у меня нет Windows здесь, и я не могу вспомнить наверняка. Возможно, вам придется использовать !myOutput! вместо %myoutput% .

Что касается использования пакета для этого ... Если вы знакомы с пакетными сценариями и дошли до этого ... конечно, придерживайтесь этого, иначе я бы использовал что-то более динамичное и менее сложное, например, Python, поскольку манипулирование данными может быть немного сложнее в пакетном режиме. Я не уверен , если он поддерживает регулярные выражения, но если это не было бы хорошей идеей использовать его вместо того , чтобы все эти сумасшедшие for параметров.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .