Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] вставить в файл, его имя

Ответить
Настройки темы
CMD/BAT - [решено] вставить в файл, его имя

Аватара для talmachka

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Парни, Хэлп!)

Задача такая, есть папка, в ней список файлов, в каждом файле есть ' #####! ' (например), нужно батник, который запускался бы в этой папке, проходился по всем файлам что в ней находятся, и заменял ' #####! ' на ' имя файла' ПыСы: только без расширения, т.е. если файл Вася.txt, чтоб вставлялось Вася.

ломаю голову уже несколько дней, ну не въеду никак)

Отправлено: 12:57, 01-10-2015

 

Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Батник не слишком хорош для обработки текста. Два варианта:
Код: Выделить весь код
@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"

)
Вариант на Powershell:
Код: Выделить весь код
foreach ($f in (get-item *.txt)) { (get-content $f) -replace '####!',$f.basename | set-content $f }

Последний раз редактировалось Foreigner, 01-10-2015 в 16:07.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:27, 01-10-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для talmachka

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить 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
Былоб удобнее конечно если можно решить задачу с помощью bat файла.

Отправлено: 08:46, 02-10-2015 | #3


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


talmachka, Для повершелл один раз выполните от администратора:
Код: Выделить весь код
set-executionpolicy remotesigned
Цитата:
во втором варианте отработав странички стали пустыми.
Там необходим sed

Отправлено: 10:15, 02-10-2015 | #4


Аватара для talmachka

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Foreigner, спасибо Вам, а можно попросить Вас доработать первый вариант, так как с шелом и sed не особо знакома.

Sed установила, но также пустые файлы после запуска батника(

Файл 129649

прикрепила архив, здесь сами файлы и батник ver1

Через шелл тоже не получается, изменила политику безопасности по Вашей рекомендации, но в файлах ничего не поменялось после запуска команды.
Код: Выделить весь код
PS C:\Users\User> D:\list\new\jpg.ps1
PS C:\Users\User>

Последний раз редактировалось talmachka, 02-10-2015 в 12:27.


Отправлено: 10:29, 02-10-2015 | #5


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


talmachka, Скиньте архив куда-нибудь на обменник. Здесь его взять не получается. И напишите, что надо заменить на название файла.

Отправлено: 13:36, 02-10-2015 | #6


Аватара для talmachka

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Foreigner, скачать. В каждой html-ке, есть ' ####!.jpg ' нужно чтоб батник смог заменить ' ####!.jpg ' ---- ' имя_файла.jpg ' , только очень важно чтоб он это делал в каждом файле, который нах-ся в папке, так как таких файлов будет много. Большое Спасибо.

Отправлено: 13:46, 02-10-2015 | #7


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


talmachka, Попробовал.. Все работает. Батник (с помощью sed):
Код: Выделить весь код
@echo off
setlocal

for %%i in (*.html) do (

	1>%%~ni.tmp sed "s/####!/%%~ni/" "%%i"
	move "%%~ni.tmp" "%%i" 	

)
Скрипт powershell:
Код: Выделить весь код
foreach ($file in (get-item *.html)) {

	(get-content $file) -replace '####!',$file.basename | set-content $file

}
По батнику просто щелкнуть на выполнение, скрипт powershell сохраните с расширением .ps1, потом открываете powershell.exe (Win+R, powershell, Enter), потом в открывшейся консоли переходите в папку с файлами и выполняете скрипт:
Код: Выделить весь код
pushd 'C:\users\talmachka\desktop\new'
.\название_скрипта
подразумевается, что скрипты в папке с файлами html
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:48, 02-10-2015 | #8


Аватара для talmachka

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Foreigner, Спасибо, через shell отработало! Подскажите плиз, батник просто запускаю? или как-то особенно нужно, просто также стер он все в html файлах и все sed установил отсюда http://sourceforge.net/projects/gnuw...se_mirror=kent нужно ли перезагружать комп?

Отправлено: 15:00, 02-10-2015 | #9


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


talmachka, Вам надо проверить попала ли папка, где sed.exe в переменную %PATH%. Для этого в cmd просто выполните:
Код: Выделить весь код
sed
Если есть ошибка:
Код: Выделить весь код
"sed" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
то необходимо прописать путь к нему в самом батнике или добавить каталог, в котором он находится в %path% (свойства системы > переменные среды)
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:19, 02-10-2015 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] вставить в файл, его имя

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Вставить в пустое поле в программу имя пользователя ПК 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




 
Переход