Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии Windows

Модерирует : KLASS, IFkO

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

Открыть новую тему     Написать ответ в эту тему

KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Старые и смежные темы: по CMD и в Программах | по PowerShell | В помощь системному администратору | Прикладное программирование

PowerShell
Версии | Ассоциация и подпись сценариев
Сценарий для ассоциации файлов PowerShell и запуска неподписанных скриптов.
 
Прочее
  • Если используете "белый список" в брандмауэре Windows, то для работы сценариев в сети необходимо создать 2 исходящих правила для svchost.exe и PowerShell.exe.
  • В отличие от батников, кодировка скриптов на PowerShell должна быть 1251 (ANSI). Начиная с версии PowerShell Core 6.0, кодировка по умолчанию UTF8NoBOM.
Расширение возможностей
Функции
Write-Color
Провайдеры
Готовые скрипты
Ошибки и предупреждения в журнале событий по электронной почте (в4.0)
Преобразование алиасов в скриптах к полным командам.
Получение детализированной информации из файлов.
Скачивание файлов по списку из файла .csv, ведение лога
 
Полезные ссылки | Будет ли репозиторий PowerShell на ru-board?

Cmd
Для перекодирования кирилицы 866<—>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы
 
Готовые решения и частые вопросы
 
Описания работы команд и символов участниками темы:
setlocal enabledelayedexpansion и переменные окружения
символы & и && в командной строке
Переменная %0
 
Полезные ссылки и утилиты

WSH (VBScript, JScript)
Программирование "удобняшек" на VBScript

Примечания:
• Большие куски кода заключайте в тэг [ more ]
• Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте код без пробелов иначе сценарий может работать неправильно. Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
• Сторонние консольные утилиты можно использовать только в виде готового решения и только в рамках сценариев. Никаких обсуждений и обучений работе с утилитами не предусмотрено и прямо запрещено правилами топика.
Шапка и около-темные вопросы |

Всего записей: 7420 | Зарегистр. 12-10-2001 | Отправлено: 13:40 17-02-2018 | Исправлено: YuS_2, 13:48 16-10-2018
lorents



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день!
 
помогите, пожалуйста, еще с одним скриптом.
 
Есть программа:
"C:\Program Files (x86)\Tester\tester.exe"
 
Подскажите, как сделать батник, чтобы можно перекинуть папку с файлами XML или просто несколько файлов XML на значок батника, чтобы запустилась программа tester. Как запустить сразу несколько копий tester? Допустим, я перекинул 4 файла XML и запустилось 4 копии программы tester
 
BorlandIMHO

Цитата:
Ну, в таком случае вообще не нужно вводить переменную FILE2PRINT в батнике, вместо неё с тем же успехом можно скормить wsf непосредственно "%1".

Так и сделал. Еще раз спасибо!

----------
Image Catalyst - оптимизация изображений без потери качества

Всего записей: 3278 | Зарегистр. 30-12-2007 | Отправлено: 21:01 03-05-2018 | Исправлено: lorents, 21:04 03-05-2018
BorlandIMHO

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Насчёт папку - фиг знает, думать надо. Если просто кучу файлов - то так:
process.cmd

Код:
@echo OFF
:LOOP
if "%~1" == "" goto :EOF
start "%~1" "C:\Program Files (x86)\Tester\tester.exe" "%~1"
shift /1
goto :LOOP
 

Запустит tester для каждого из скормленных файликов отдельным процессом.
Файлики просто выделить в проводнике и перетащить мышОм на process.cmd
 
P.S. Опытным путём выявлено ограничение: не более 143 файлов за раз. Больше cmd переварить не может...

----------
http://www.imho.ws

Всего записей: 952 | Зарегистр. 12-10-2006 | Отправлено: 21:34 03-05-2018 | Исправлено: BorlandIMHO, 21:52 03-05-2018
NIKZZZZ



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lorents
Для файлов и папок

Код:
@echo OFF
:LOOP
if "%~1" == "" goto :EOF
set atr=%~a1
if %atr%==%atr:d=% goto _1
for /f "delims=" %%a in ('dir /b /a:-d "%~f1\*.xml"') do start "" "C:\Program Files (x86)\Tester\tester.exe" "%%~fa"
goto _2
:_1
start "" "C:\Program Files (x86)\Tester\tester.exe" "%~f1"
:_2
shift
goto :LOOP
 

 
 
Добавлено:

Цитата:
Опытным путём выявлено ограничение: не более 143 файлов за раз. Больше cmd переварить не может...

Там ограничение длины ком. строки 8191 символов скорее всего влияет.

Всего записей: 4920 | Зарегистр. 08-02-2006 | Отправлено: 22:03 03-05-2018
lorents



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NIKZZZZ
Спасибо, все работает!
 
BorlandIMHO
Спасибо!

----------
Image Catalyst - оптимизация изображений без потери качества

Всего записей: 3278 | Зарегистр. 30-12-2007 | Отправлено: 22:11 03-05-2018
Alex_OS

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Создал файл "remove from admins.bat". Содержимое:

Код:
net localgroup Администраторы Алексей /delete

Если запустить файл, удаление из группы админов не происходит, но если выполнить эту комманду в cmd.exe, то происходит. Как заставить её выполняться запуском bat'ника? Bat'ник запускал от админа и это не сработало.

Всего записей: 207 | Зарегистр. 01-10-2017 | Отправлено: 22:37 03-05-2018
NIKZZZZ



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_OS
Возможно проблема в кодировке, батник должен быть в OEM кодировке.
 

Всего записей: 4920 | Зарегистр. 08-02-2006 | Отправлено: 22:41 03-05-2018
lorents



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NIKZZZZ
у меня с папками не работает
 
Программа выдает:
Файл C:\Users\Lorents\Desktop\3\NO_NDFL3_2.XML не найден
 
А файл находится в
C:\Users\Lorents\Desktop\3\1\NO_NDFL3_2.XML
 
Добавлено:
BorlandIMHO

Цитата:
 "%folder%\cscript.exe" //I //Nologo //Job:testPrint "%~dp0test.wsf" testPrint "%FILE2PRINT:\=\\%"  

Как сделать, чтобы работал по сетевым папкам тоже?

----------
Image Catalyst - оптимизация изображений без потери качества

Всего записей: 3278 | Зарегистр. 30-12-2007 | Отправлено: 17:24 04-05-2018
BorlandIMHO

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Как сделать, чтобы работал по сетевым папкам тоже?

А никак.
Как батнику, так и скрипту сугубо параллельно, сетевой путь или локальный.
Но винда (очевидно, из соображений безопасности) ограничивает доступ скрипта к сетевым ресурсам.

----------
http://www.imho.ws

Всего записей: 952 | Зарегистр. 12-10-2006 | Отправлено: 08:43 05-05-2018
NIKZZZZ



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lorents

Цитата:
у меня с папками не работает  

 
Если нужно в папках искать рекурсивно

Код:
for /f "delims=" %%a in ('dir /b /a:-d /s "%~f1\*.xml"') do start "" "C:\Program Files (x86)\Tester\tester.exe" "%%~fa"  


Всего записей: 4920 | Зарегистр. 08-02-2006 | Отправлено: 11:28 05-05-2018
lorents



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NIKZZZZ
Спасибо.
 
BorlandIMHO
Вы правы, ошибка именно с виндой

----------
Image Catalyst - оптимизация изображений без потери качества

Всего записей: 3278 | Зарегистр. 30-12-2007 | Отправлено: 19:57 05-05-2018
Mr_SMiT



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть батник, работает как требуется. И вот понадобилось запустить его одной строкой, т.е. весь код чтобы был без переносов. Работают только две первые команды и то, если после них ничего нет.  
Как запустить в одну строку? уже голову сломал.
@echo off & echo 111111 & echo 222222 & pause
Два амперсанда тоже не помогают.

Всего записей: 632 | Зарегистр. 18-07-2006 | Отправлено: 07:56 06-05-2018
RetroRocket



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mr_SMiT

Цитата:
Два амперсанда тоже не помогают.

У меня работают -

 
Добавлено:
Всё как в справке описано (cmd.exe /?) -
"Чтобы указать в одной строке несколько команд, следует разделить их символами '&&' и заключить в кавычки."

----------
"... Зовёт, зовёт в дорогу далёкий Млечный Путь ..."

Всего записей: 617 | Зарегистр. 02-01-2018 | Отправлено: 08:40 06-05-2018
Mr_SMiT



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
@echo off
cd "%~dp0"
set /p str=<file.ini
set str=%str:;= + %
set str=%str:~0,-3%
copy /b %str% file.bin
Маленько неудачный пример я привел. Вот это не могу в одну строку сложить.

Всего записей: 632 | Зарегистр. 18-07-2006 | Отправлено: 08:54 06-05-2018 | Исправлено: Mr_SMiT, 12:42 06-05-2018
NIKZZZZ



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mr_SMiT
1.cd "%~dp0"  - %0 существует только в батниках
2. Необходимо использовать setlocal enabledelayedexpansion .  
 

Код:
setlocal enabledelayedexpansion & @echo off & set /p str=<lib.cfg & set str=!str:;= + ! & set str=!str:~0,-3%! & copy /b !str! ADAP_ios.VER  

Всего записей: 4920 | Зарегистр. 08-02-2006 | Отправлено: 11:59 06-05-2018
Mr_SMiT



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NIKZZZZ
Спасибо, в батнике работает.

Всего записей: 632 | Зарегистр. 18-07-2006 | Отправлено: 12:42 06-05-2018
immotus



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Возвращаясь к моему вопросу:
Цитата:
Есть у кого готовый файл по выборочному переносу профильных папок пользователя Windows?
Только чтобы все корректно с сохранением псевдонимов.
и
Цитата:
Код все тот же, которым переносился "Рабочий стол" на Windows XP.
Код:
mkdir D:\User\Desktop
xcopy "%UserProfile%\ђ Ў®зЁ© бв®«" D:\User\Desktop /s/e/y
REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Desktop /t REG_SZ /d "D:\User\Desktop" /f
REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop /t REG_EXPAND_SZ /d "D:\User\Desktop" /f
Только чего-то вот с псевдонимами он не дружит. Надо чего-то подкорректировать. Так-то задолбало, каждую папку вручную переносить.
Может кто помочь поправить проблему с русскоязычными псевдонимами? Ну или сразу поделится готовым решением, если есть, а то вдруг в найденном мной коде есть еще какие "подводные камни"? Речь идет о русскоязычной Win10.

Всего записей: 1277 | Зарегистр. 27-07-2007 | Отправлено: 11:03 08-05-2018 | Исправлено: immotus, 11:07 08-05-2018
BorlandIMHO

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
immotus
Не очень давно отвечал на похожий вопрос. И не только я.

----------
http://www.imho.ws

Всего записей: 952 | Зарегистр. 12-10-2006 | Отправлено: 17:40 08-05-2018
RetroRocket



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Предыстория.
 
HandyCache
Исправленный lame.bat. Файлы с пробелами в именах обрабатывает корректно.

Код:
@echo off
rem  please set LAME and LAMEOPTS
rem  LAME - where the executeable is
rem  OPTS - options you like LAME to use
rem  ---------------------------------------------
 
    set LAME=c:\lame\lame.exe
    set OPTS=--preset radio
 
rem  ---------------------------------------------
    set thecmd=%LAME% %OPTS%
::    lfnfor on
:processArgs
    if -%1==- goto endmark
    echo.
    echo Converting %1 ...
    echo.
    for /F "delims=" %%f in (%1) do %thecmd% "%%f"
    if %errorlevel% neq 0 goto errormark
    echo.
    echo Deleting %1 ...
    del %1
    shift
    goto processArgs
:errormark
    echo.
    echo.
    echo ERROR processing %1
    echo.
    pause  
:endmark
echo.
echo.
echo Finished.
echo.


----------
"... Зовёт, зовёт в дорогу далёкий Млечный Путь ..."

Всего записей: 617 | Зарегистр. 02-01-2018 | Отправлено: 09:57 10-05-2018
irsemi

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RetroRocket
Подскажите пожалуйста, какую роль в этом батнике выполняет

Код:
for /F "delims=" %%f in (%1) do %thecmd% "%%f"

 
Почему нельзя написать

Код:
%thecmd% %1

или

Код:
%thecmd% "%~1"

?
 
Добавлено:
И вообще, если в пути к файлу не будет пробелов и соответственно кавычек

Код:
for /F "delims=" %%f in (%1) do %thecmd% "%%f"

Попытается открыть первый mp3 как файл-список?

Всего записей: 86 | Зарегистр. 28-11-2016 | Отправлено: 18:50 10-05-2018
RetroRocket



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
irsemi
Я не с нуля делал батник, а просто немного доработал тот, что был в комплекте lame-3.92, для корректной работы с файлами, содержащими пробелы в имени.
На вход батнику подаются несколько имён файлов через пробел (например, lame.bat "1 2.wav" "3 4.wav" "5 6.wav" "7 8.wav").
Наверное, сработало бы и без цикла for, ведь на каждой итерации в параметре %1 имя только одного файла - первоначально %1="1 2.wav", после первой команды shift %1="3 4.wav", после второй команды shift %1="5 6.wav" и так далее до обнуления %1.

Цитата:
Попытается открыть первый mp3 как файл-список?

Почему список то? Переменной %f присвоится значение параметра %1 (пусть, к примеру, 123.wav) и выполнится команда  

Код:
lame.exe --preset radio 123.wav


----------
"... Зовёт, зовёт в дорогу далёкий Млечный Путь ..."

Всего записей: 617 | Зарегистр. 02-01-2018 | Отправлено: 19:36 10-05-2018
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии Windows

Имя:
Пароль:
Сообщение

Для вставки имени, кликните на нем.

Опции сообщенияДобавить свою подпись
Подписаться на получение ответов по e-mail
Добавить тему в личные закладки
Разрешить смайлики?
Запретить коды


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2018

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru