|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] вставить в файл, его имя |
|
|
CMD/BAT - [решено] вставить в файл, его имя
|
Новый участник Сообщения: 6 |
Парни, Хэлп!)
Задача такая, есть папка, в ней список файлов, в каждом файле есть ' #####! ' (например), нужно батник, который запускался бы в этой папке, проходился по всем файлам что в ней находятся, и заменял ' #####! ' на ' имя файла' ПыСы: только без расширения, т.е. если файл Вася.txt, чтоб вставлялось Вася. ломаю голову уже несколько дней, ну не въеду никак) |
|
Отправлено: 12:57, 01-10-2015 |
Ветеран Сообщения: 1758
|
Батник не слишком хорош для обработки текста. Два варианта:
@echo off setlocal :: 1-й вариант for %%i in (*.txt) do ( for /f "tokens=*" %%j in ('type %%i') do ( 1>>"%%~ni.tmp" (if "%%j"=="####!" (echo %%~ni) else (echo %%j)) move "%%~ni.tmp" "%%i" )) :: 2-й вариант for %%i in (*.txt) do ( 1>"%%~ni.tmp" sed "s/####!/%%~ni/" %%i move "%%~ni.tmp" "%%i" ) |
Последний раз редактировалось Foreigner, 01-10-2015 в 16:07. Отправлено: 14:27, 01-10-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Foreigner, спасибо, но не выходит что-то
в первом варианте, он заменяет все содержимое html странички, оставив только </html>, и создает несколько ИМЯ.tmp файлов пустых, во втором варианте отработав странички стали пустыми. P.S. везде поменял (*.txt) на (*.html) так как именно в html страничках мне нужно наз-ие файла. В Шелл выдает : Не удается загрузить файл D:\list\new\jpg.ps1, так как выполнение скриптов запрещено для данной системы. Введите "get-h elp about_signing" для получения дополнительных сведений. строка:1 знак:20 + D:\list\new\jpg.ps1 <<<< + CategoryInfo : NotSpecified: (:) [], PSSecurityException + FullyQualifiedErrorId : RuntimeException |
Отправлено: 08:46, 02-10-2015 | #3 |
Ветеран Сообщения: 1758
|
talmachka, Для повершелл один раз выполните от администратора:
Цитата:
|
|
Отправлено: 10:15, 02-10-2015 | #4 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Foreigner, спасибо Вам, а можно попросить Вас доработать первый вариант, так как с шелом и sed не особо знакома.
Sed установила, но также пустые файлы после запуска батника( Файл 129649 прикрепила архив, здесь сами файлы и батник ver1 Через шелл тоже не получается, изменила политику безопасности по Вашей рекомендации, но в файлах ничего не поменялось после запуска команды. |
|
Последний раз редактировалось talmachka, 02-10-2015 в 12:27. Отправлено: 10:29, 02-10-2015 | #5 |
Ветеран Сообщения: 1758
|
talmachka, Скиньте архив куда-нибудь на обменник. Здесь его взять не получается. И напишите, что надо заменить на название файла.
|
Отправлено: 13:36, 02-10-2015 | #6 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Foreigner, скачать. В каждой html-ке, есть ' ####!.jpg ' нужно чтоб батник смог заменить ' ####!.jpg ' ---- ' имя_файла.jpg ' , только очень важно чтоб он это делал в каждом файле, который нах-ся в папке, так как таких файлов будет много. Большое Спасибо.
|
Отправлено: 13:46, 02-10-2015 | #7 |
Ветеран Сообщения: 1758
|
talmachka, Попробовал.. Все работает. Батник (с помощью sed):
@echo off setlocal for %%i in (*.html) do ( 1>%%~ni.tmp sed "s/####!/%%~ni/" "%%i" move "%%~ni.tmp" "%%i" ) foreach ($file in (get-item *.html)) { (get-content $file) -replace '####!',$file.basename | set-content $file } подразумевается, что скрипты в папке с файлами html |
Отправлено: 14:48, 02-10-2015 | #8 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Foreigner, Спасибо, через shell отработало! Подскажите плиз, батник просто запускаю? или как-то особенно нужно, просто также стер он все в html файлах и все
![]() |
Отправлено: 15:00, 02-10-2015 | #9 |
Ветеран Сообщения: 1758
|
talmachka, Вам надо проверить попала ли папка, где sed.exe в переменную %PATH%. Для этого в cmd просто выполните:
Если есть ошибка: то необходимо прописать путь к нему в самом батнике или добавить каталог, в котором он находится в %path% (свойства системы > переменные среды) |
Отправлено: 15:19, 02-10-2015 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Вставить в пустое поле в программу имя пользователя ПК | andry692 | AutoIt | 12 | 28-05-2014 12:17 | |
Как вставить управляющий символ Unicode в имя файла. | SANIOK_AV | Хочу все знать | 19 | 10-11-2012 09:15 | |
CMD/BAT - [решено] Вставить имя файла в текстовый файл (UTF-8 without BOM) | Jahnhoy | Скриптовые языки администрирования Windows | 11 | 19-09-2011 17:39 | |
Sharepoint - Как вставить имя пользователя в определённое поле | maives | Другие серверные продукты | 0 | 09-11-2009 14:17 | |
CMD/BAT - [решено] найти файл и использовать его имя | Mad Max | Скриптовые языки администрирования Windows | 4 | 19-07-2009 23:13 |
|