Гость
Форумы / Windows [игнор отключен] [закрыт для гостей] / powershell -replace / 11 сообщений из 11, страница 1 из 1
07.12.2017, 10:00
    #39565585
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
powershell -replace
На многих ПК есть файл типа file.bat. Содержимое схожее.
Везде есть 1-2 строки.

Код: plaintext
1.
C:\ProgramData\streams.exe -d %1
copy %1 \\modus\print\print.txt

Так вот, "%1" нужно заменить на "%UserProfile%\Downloads\txt.txt"

выполняю
Код: powershell
1.
powershell -Command "(gc file.bat) -replace '%1', '%UserProfile%\Downloads\txt.txt' | Out-File file.bat"



но в итоговом файле получается длинная строка:
C:\Users\user777\Downloads\txt.txtCC:\Users\user777\Downloads\txt.txt:C:\Users\user777\Downloads\txt.txt\C:\Users\user777\Downloads\txt.txtPC:\Users\user777\Downloads\txt.txtr........ и т.д.



а ещё нужно убрать "C:\ProgramData\", т.е. заменить на пустоту или хотя бы пробел.
Код: powershell
1.
powershell -Command "(gc toprn.bat) -replace 'C:\ProgramData\', ' ' | Out-File toprn1.bat"


но PowerShell ругается на "Недопустимый шаблон регулярного выражения".
...
Рейтинг: 0 / 0
07.12.2017, 10:01
    #39565586
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
powershell -replace
В итоге нужно получить

Код: sql
1.
2.
streams.exe -d %UserProfile%\Downloads\txt.txt
copy %UserProfile%\Downloads\txt.txt \\modus\print\print.txt
...
Рейтинг: 0 / 0
07.12.2017, 10:21
    #39565602
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
powershell -replace
Насколько я помню streams , задача "скопировать текстовый файл без альтернативных потоков" тривиально решается в одну строчку:
Код: plaintext
 type файл-источник > файл-приёмник

P.S. -replace работает со строками, а не с файлами. Почувствуйте, как говориться, разницу.
А если всё равно велосипедить цикл фильтрации строк, то почему бы просто не раскидать по хостам новый вариант скрипта?
Зачем обязательно "ad astra per anus"?
...
Рейтинг: 0 / 0
07.12.2017, 10:47
    #39565624
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
powershell -replace
...
Рейтинг: 0 / 0
07.12.2017, 13:46
    #39565822
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
powershell -replace
Basil A. Sidorov,

я про steams ничего и не спрашивал
...
Рейтинг: 0 / 0
07.12.2017, 13:48
    #39565824
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
powershell -replace
Basil A. Sidorov Пример 3 .

Вы пробовали с моими строками?
'%1', '%UserProfile%\Downloads\txt.txt'
...
Рейтинг: 0 / 0
07.12.2017, 14:14
    #39565859
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
powershell -replace
X11Так вот, "%1" нужно заменить на "%UserProfile%\Downloads\txt.txt"

выполняю
Код: powershell
1.
powershell -Command "(gc file.bat) -replace '%1', '%UserProfile%\Downloads\txt.txt' | Out-File file.bat"


Замена %1 и %UserProfile% происходит ДО запуска powershell, т.е. реально запускается такая строка
Код: powershell
1.
powershell -Command "(gc file.bat) -replace '', 'C:\Users\user777\Downloads\txt.txt' | Out-File file.bat"


ищи как правильно написать чтобы знак % остался на месте.
...
Рейтинг: 0 / 0
07.12.2017, 14:30
    #39565886
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
powershell -replace
Я думал заэкранировать обратный слешем \, но вываливается ошибка.
В общем, я на Delphi за полчаса написал консольную утилиту по замене текста.
Так что, пока вопрос закрыт.
...
Рейтинг: 0 / 0
08.12.2017, 03:42
    #39566337
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
powershell -replace
X11Вы пробовали с моими строками?Типа, это мне надо???
Я указал, что согласно MSDN, замена строк в файле делается не так, как это делаете вы.
И я вправе не разбираться ещё и с экранированием.
...
Рейтинг: 0 / 0
08.12.2017, 03:54
    #39566340
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
powershell -replace
Dima Tищи как правильно написать чтобы знак % остался на месте.В комстроке - ^, в пакетном файле - удвоение.
...
Рейтинг: 0 / 0
08.12.2017, 12:07
    #39566505
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
powershell -replace
Ну на будущее буду знать. Спасибо.
...
Рейтинг: 0 / 0
Форумы / Windows [игнор отключен] [закрыт для гостей] / powershell -replace / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]