Подскажите пожалуйста, можно ли написать сценарий который бы при открытии pdf-файлов определял открывать эти файлы программой по умолчанию в Windows или, если умолчание не заданно, программой, находящейся на компакт-диске (например, портативный FoxitPDFreader_4.1.1.exe).
» Задачи на bat-файлах 10
Alexey87
Проверяй (через reg query) наличие HKCR\.pdf - если есть значит в систме зарегистрирована прога для его открытия...
Проверяй (через reg query) наличие HKCR\.pdf - если есть значит в систме зарегистрирована прога для его открытия...
res2001
Цитата:
Нужно сделать это средствами cmd. Просто примерно год назад я видел здесь такой код, сейчас его найти никак не могу.
wolf0425
Цитата:
В папке лежат архивы, которые делались чуть больше года каждый день кроме выходных. нужно оставить только созданные в пятницу.
Сделать надо один раз для каждой папки (папок с такими архивами 12).
Если подробнее, то из этих 400 файлов примерно 80 были созданы в пятницу (файлы создавались с июня 2009 года до декабря 2010). И нужно оставить именно эти примерно 80 файлов.
Цитата:
Проще всего определить день недели с помощью VBS/JS скрипта или задать дату пятницы в параметре.
Тебе как?
Нужно сделать это средствами cmd. Просто примерно год назад я видел здесь такой код, сейчас его найти никак не могу.
wolf0425
Цитата:
а это нужно однократно что-то рассортировать или настроить для каждой пятницы?
просто если для каждой - то настраиваешь шедулер на запуск батника вечером пятницы, в батнике удаляешь всё с датой "не сегодня"...
В папке лежат архивы, которые делались чуть больше года каждый день кроме выходных. нужно оставить только созданные в пятницу.
Сделать надо один раз для каждой папки (папок с такими архивами 12).
Если подробнее, то из этих 400 файлов примерно 80 были созданы в пятницу (файлы создавались с июня 2009 года до декабря 2010). И нужно оставить именно эти примерно 80 файлов.
yurkesha, а как будет выглядеть код батника, который будет проверять ассоциацию с pdf-файлом и запускать этот файл по ассоциации или если же ассоциации нет, то открывать FoxitPDFreader_4.1.1.exe, который находится на компакт-диске.
Alexey87
Ассоциацию можно проверить с помощью команд assoc и ftype:
Код:
@echo off
setlocal
set "file=%1"
2>nul 1>&2 assoc .pdf || goto:foxit
for /f "tokens=2 delims==" %%i in (' assoc .pdf ') do (
for /f "tokens=2 delims==" %%j in (' ftype %%i ') do call:echo %%j
)
goto:eof
:foxit
start "" "e:\pdf\foxitreader.exe" %file%
goto:eof
:echo
start "" %1 %file%
Ассоциацию можно проверить с помощью команд assoc и ftype:
Код:
@echo off
setlocal
set "file=%1"
2>nul 1>&2 assoc .pdf || goto:foxit
for /f "tokens=2 delims==" %%i in (' assoc .pdf ') do (
for /f "tokens=2 delims==" %%j in (' ftype %%i ') do call:echo %%j
)
goto:eof
:foxit
start "" "e:\pdf\foxitreader.exe" %file%
goto:eof
:echo
start "" %1 %file%
01MDM, а если ассоциация в Windows не задана как, используя ваш код, открывать pdf-файлы в портативном FoxitPDFreader_4.1.1.exe, который находится на компакт-диске.
Alexey87
Поправил. Пути сам отредактируешь, батник запускать с файлом pdf в качестве параметра.
Поправил. Пути сам отредактируешь, батник запускать с файлом pdf в качестве параметра.
запрос
Код: wmic path OfficeSoftwareProtectionProduct where (PartialProductKey!=null) get Name /value
Код: wmic path OfficeSoftwareProtectionProduct where (PartialProductKey!=null) get Name /value
01MDM, а можно ли как-нибудь запускать FoxitPDFreader_4.1.1.exe через переменное окружение, т.е. без указания буквы компакт-диска
Цитата:
Цитата:
start "" e:\pdf\foxitreader.exe" %file%
Alexey87
А сам батник где находится? Если на самом компакт-диске, то это проще:
Код:
start "" "%~d0pdf\FoxitPDFreader_4.1.1.exe"
А сам батник где находится? Если на самом компакт-диске, то это проще:
Код:
start "" "%~d0pdf\FoxitPDFreader_4.1.1.exe"
Цитата:
Где %~d0 -- корень диска с батником ( например E:\ )
%~d0 - это не корень диска, а буква диска, например E:
\ после него лучше не терять, т.е.
start "" "%~d0\pdf\FoxitPDFreader_4.1.1.exe"
в таком виде батник может работать из любого каталога того сd.
AlexanderNON
Цитата:
Как-то так получается:
Код: @set @x=0 /*
@echo off
set "workdir=G:\Bat\1\"
for /f "tokens=*" %%a in ('dir /a:-d /b /s %workdir%*') do (
for /f "tokens=*" %%b in ('cscript.exe //nologo /e:javascript "%~0" %%~ta') do (
if %%b neq 5 echo del /f /q %%a
))
goto:eof */
var args = WScript.Arguments;
var dd = new Date(args(0).substr(6,4),parseInt(args(0).substr(3,2))-1,args(0).substr(0,2));
WScript.echo(dd.getDay());
WScript.quit();
Цитата:
Нужно сделать это средствами cmd. Просто примерно год назад я видел здесь такой код, сейчас его найти никак не могу.
В папке лежат архивы, которые делались чуть больше года каждый день кроме выходных. нужно оставить только созданные в пятницу
Как-то так получается:
Код: @set @x=0 /*
@echo off
set "workdir=G:\Bat\1\"
for /f "tokens=*" %%a in ('dir /a:-d /b /s %workdir%*') do (
for /f "tokens=*" %%b in ('cscript.exe //nologo /e:javascript "%~0" %%~ta') do (
if %%b neq 5 echo del /f /q %%a
))
goto:eof */
var args = WScript.Arguments;
var dd = new Date(args(0).substr(6,4),parseInt(args(0).substr(3,2))-1,args(0).substr(0,2));
WScript.echo(dd.getDay());
WScript.quit();
wolf0425
Цитата:
Да, но работает и без слеша.
Цитата:
%~d0 - это не корень диска, а буква диска, например E:
Да, но работает и без слеша.
Цитата:
Да, но работает и без слеша.без слеша работает только если текущий каталог на диске - корневой.
А со слешом - независимо от текущего каталога.
wolf0425
Цитата:
Батник в %userprofile%\desktop:
Код:
@echo off
cd /d "d:\music"
start "" "%~d0Program Files\7-zip\7zfm.exe"
Цитата:
без слеша работает только если текущий каталог на диске - корневой.
Батник в %userprofile%\desktop:
Код:
@echo off
cd /d "d:\music"
start "" "%~d0Program Files\7-zip\7zfm.exe"
Цитата:
Все работает.start "" убери и проверяй ещё раз.
или сравни
dir /b "%~d0Program Files\7-zip\7zfm.exe"
и
dir /b "%~d0\Program Files\7-zip\7zfm.exe"
с чего start семерки отсчитывает относительный путь от корня а не от текущего каталога и насколько это одинаково в разных версиях виндов - вопрос конечно интересный.
res2001
Цитата:
Для его выполнения нужны какие-то сторонние утилиты? Или на стандартной Windows XP/Server будет работать без дополнительных программ?
Цитата:
На одном cmd это геморно, по моему. Реализовал через смесь cmd/js, сохраняешь весь код в бат файл и выполняешь.
Для его выполнения нужны какие-то сторонние утилиты? Или на стандартной Windows XP/Server будет работать без дополнительных программ?
AlexanderNON
Будет работать в голой винде.
Будет работать в голой винде.
wolf0425
Цитата:
А как в ХП? Я окончательно пересел на 7-ку. В общем лучше конечно со слешем, не помешает, отработает даже если вдруг, в какой-либо ситуации, он окажется двойным.
Но если честно, то эта подстановка уже достала. Из for /?:
Цитата:
Из справки логично предположить, что все эти расширения вернут РЕАЛЬНЫЙ путь к файлу %I, а не ТЕКУЩИЙ.
Цитата:
вопрос конечно интересный.
А как в ХП? Я окончательно пересел на 7-ку. В общем лучше конечно со слешем, не помешает, отработает даже если вдруг, в какой-либо ситуации, он окажется двойным.
Но если честно, то эта подстановка уже достала. Из for /?:
Цитата:
%~fI - переменная %I расширяется до полного имени файла
%~dI - из переменной %I выделяется только имя диска
%~pI - из переменной %I выделяется только путь к файлу
Из справки логично предположить, что все эти расширения вернут РЕАЛЬНЫЙ путь к файлу %I, а не ТЕКУЩИЙ.
01MDM
Цитата:
В XP отрабатывает только второй вариант, со слэшем.
Цитата:
А как в ХП?
В XP отрабатывает только второй вариант, со слэшем.
Есть файл xml, нужно чтобы батник вытаскивал из него некоторые значения в текстовый файл. Какую команду использовать?
wolf0425
Цитата:
работать то он может и будет.
а как сделать так, чтобы все pdf-файлы (их около 50 в разных каталогах) проверялись данным батником?
Цитата:
в таком виде батник может работать из любого каталога того сd
работать то он может и будет.
а как сделать так, чтобы все pdf-файлы (их около 50 в разных каталогах) проверялись данным батником?
Цитата:
Из справки логично предположить, что все эти расширения вернут РЕАЛЬНЫЙ путь к файлу %I, а не ТЕКУЩИЙ.так они то реальный и вернут, было бы в примере не %~d0pdf\ a %~dp0pdf\ - вопросов бы не возникло.
А так - к имени диска приписали относительный путь и радуемся глюкавости start который проигнорировав ошибку запускает программу.
проблема же не в том, что эти функции возвращают не то что обещано в хэлпе, а в том что c:\1\1.txt - однозначно определяет путь к файлу (от корня), а c:1\1.txt - вообще-то определяет путь к файлу от текущего каталога диска c:, а не от его корня.
Добавлено:
Цитата:
а как сделать так, чтобы все pdf-файлы (их около 50 в разных каталогах) проверялись данным батником?как сделать чтоб при подключении диска автоматом из автостарта прописывалась ассоциация в систему - правилось чем открывать pdf - это очень мелкая проблема по сравнению с тем, как автоматом убирать такую ассоциацию при отключении диска с FoxitPDFreader :)
wolf0425
Цитата:
Я как раз имел ввиду вопрос в целом. Если for не получил в виде строки путь к файлу, то он выдает текущий, что и вводит в заблуждение. А это может послужить серьезной ошибкой с последствиями.
Цитата:
проблема же не в том, что эти функции возвращают не то что обещано в хэлпе
Я как раз имел ввиду вопрос в целом. Если for не получил в виде строки путь к файлу, то он выдает текущий, что и вводит в заблуждение. А это может послужить серьезной ошибкой с последствиями.
wolf0425, не понял Вашего ответа.
Прошу подробнее объснить решается ли моя задача или нет.
Прошу подробнее объснить решается ли моя задача или нет.
res2001
Огромное спасибо! Сейчас пойду попробую ...
Огромное спасибо! Сейчас пойду попробую ...
Alexey87
Цитата:
В чем заключается проверка?
Цитата:
а как сделать так, чтобы все pdf-файлы (их около 50 в разных каталогах) проверялись данным батником?
В чем заключается проверка?
ashum
xml всеж правильнее разбирать не средствами батника, а xml парсером. Его можно заюзать из vbs/js скрипта.
Батники со структурой xml работать не умеют.
Обработать xml можно батником, но только как простой текстовый файл. Если, например, упакуешь xml (исключишь все лишние пробелы и переводы строк), то такая обработка уже не пройдет, надо будет переделывать. Но если заранее известно, что xml будет именно в таком виде и никогда изменяться не будет, то можно и батником.
Но отдельной команды нет, надо смотреть твой xml, смотреть что искать и исходя из этих данных делать батник, так что пример xmlа в студию и чего искать.
xml всеж правильнее разбирать не средствами батника, а xml парсером. Его можно заюзать из vbs/js скрипта.
Батники со структурой xml работать не умеют.
Обработать xml можно батником, но только как простой текстовый файл. Если, например, упакуешь xml (исключишь все лишние пробелы и переводы строк), то такая обработка уже не пройдет, надо будет переделывать. Но если заранее известно, что xml будет именно в таком виде и никогда изменяться не будет, то можно и батником.
Но отдельной команды нет, надо смотреть твой xml, смотреть что искать и исходя из этих данных делать батник, так что пример xmlа в студию и чего искать.
res2001
Пример xml:
Код: <?xml version="1.0" encoding="WINDOWS-1251" ?><ELEM_LIST><ELEM PLAYER_NAME="Плейер А-B" STATUS="playing"><START_TIME>20:24:08</START_TIME><BLK_TYPE>М</BLK_TYPE><TYPE>М</TYPE><NAME>Canson Del Mariachi</NAME><ARTIST>Los Lobos & Antonio Banderas</ARTIST><AUTHOR></AUTHOR><ALBUM></ALBUM><DBID>2505</DBID><DURATION>00:02:01</DURATION></ELEM><ELEM PLAYER_NAME="Плейер А-B" STATUS="preloaded"><START_TIME></START_TIME><BLK_TYPE>М</BLK_TYPE><TYPE>Д</TYPE><NAME>Золотые Хиты (80-90, СИ) НГ middle</NAME><ARTIST></ARTIST><AUTHOR></AUTHOR><ALBUM></ALBUM><DBID></DBID><DURATION>00:00:07</DURATION></ELEM></ELEM_LIST>
Пример xml:
Код: <?xml version="1.0" encoding="WINDOWS-1251" ?><ELEM_LIST><ELEM PLAYER_NAME="Плейер А-B" STATUS="playing"><START_TIME>20:24:08</START_TIME><BLK_TYPE>М</BLK_TYPE><TYPE>М</TYPE><NAME>Canson Del Mariachi</NAME><ARTIST>Los Lobos & Antonio Banderas</ARTIST><AUTHOR></AUTHOR><ALBUM></ALBUM><DBID>2505</DBID><DURATION>00:02:01</DURATION></ELEM><ELEM PLAYER_NAME="Плейер А-B" STATUS="preloaded"><START_TIME></START_TIME><BLK_TYPE>М</BLK_TYPE><TYPE>Д</TYPE><NAME>Золотые Хиты (80-90, СИ) НГ middle</NAME><ARTIST></ARTIST><AUTHOR></AUTHOR><ALBUM></ALBUM><DBID></DBID><DURATION>00:00:07</DURATION></ELEM></ELEM_LIST>
Люди, подскажите как в бат файлах реализовать такое:
Что бы проходил пинг по списку компьютеров из текстового файла и писал об этом отчет?
Что бы проходил пинг по списку компьютеров из текстового файла и писал об этом отчет?
Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
Предыдущая тема: зависает установка Windows XP: 39 минут
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.