Я хочу найти "URL =" в файле. Поскольку я новичок в таких вещах, я собрал несколько фрагментов кода из stackoverflow, ... ;-)
http://www.dostips.com/forum/viewtopic.php?f=3&t=2836&start=30
Получить список переданных аргументов в пакетном скрипте Windows (.bat )
Как получить даже самые странные параметры командной строки?
моя проблема: если файл или путь содержит немецкий "ö / ä / ü" или буквы / знаки из иностранных языков в пути или имени файла
D:\...\fähren
рассматривается как это
D:\...\f"hren
и findstr сообщает "не могу открыть файл". Вот часть моего .bat
rem %cmdcmdline%
...
:file rem url from .url file - im file steht URL=http.... .htm
for /f "delims=" %%a in ('findstr /b "URL=" "%~1"') do set URL="%%a"
echo. %URL% | FIND /I "URL=">Nul || (set URL=""&goto startit)
rem delete all until URL
set URL="%URL:*URL=%
rem delete =
set URL="%URL:~2%
.bat вызывается из окон, как это
HKEY_CLASSES_ROOT\InternetShortcut\shell\chrome\command "D:\sources\chrome\portable\chrome\chrome.exe" "%1"
rem% cmdcmdline% в начале .bat выглядит нормально
D:\4all\reisen\istanbul\verkehr\fähren>rem C:\Windows\system32\cmd.exe /c ""C:\Users\gigoelri\AppData\Local\Temp\333A.tmp\chrome_pause.bat" D:\sources\chrome\portable\chrome\chrome.exe D:\4all\reisen\istanbul\verkehr\fähren\Bosp_eminönü_2h_14h30_12tl_SehirHatlari.url "
вывод цикла for выглядит так:
D:\4all\reisen\istanbul\verkehr\fähren>for /F "delims=" %a in ('findstr /b "URL=" "D:\4all\reisen\istanbul\verkehr\fähren\Bosp_eminönü_2h_14h30_12tl_SehirHatlari.url"') do set URL="%a"
FINDSTR: D:\4all\reisen\istanbul\verkehr\f"hren\Bosp_emin"n?_2h_14h30_12tl_SehirHatlari.url kann nicht geöffnet werden.(cannot be opened)
D:\4all\reisen\istanbul\verkehr\fähren>echo. | FIND /I "URL=" 1>Nul || (set URL="" & goto startit )
Кодовая страница моего окна cmd:
D:\sources\firefox\_install>chcp
Aktive Codepage: 850.
Mofi 4: пробуем метод mofis 4 - результат: файл не найден
rem C:\Windows\system32\cmd.exe /c ""C:\Users\gigoelri\AppData\Local\Temp\F54D.tmp\firefox_pause.bat" D:\sources\firefox\portable\firefox\firefox.exe D:\4all\reisen\istanbul\verkehr\fähren\Bosp_eminönü_2h_14h30_12tl_SehirHatlari.url "
...
D:\4all\reisen\istanbul\verkehr\fähren>for /F "usebackq tokens=1* delims==" %a in ("D:\4all\reisen\istanbul\verkehr\fähren\Bosp_eminönü_2h_14h30_12tl_SehirHatlari.url") do (if /I "%a" == "URL" (
set "URL=%b"
goto startit
) )
Die Datei "D:\4all\reisen\istanbul\verkehr\fähren\Bosp_eminönü_2h_14h30_12tl_SehirHatlari.url"
kann nicht gefunden werden.
На этот раз причина в том, что имя файла содержит турецкие буквы, такие как "Ş" вместо "S"
Изменить 20150629:
Система - Windows7, а диск D: NTFS.
% ~ s1 тоже не работает:
D:\4all\reisen\istanbul\verkehr\fähren>for /F "usebackq tokens=1* delims==" %a in ("D:\4all\reisen\istanbul\verkehr\FHREN~1\Bosp_eminönü_2h_14h30_12tl_SehirHatlari.url") do (if /I "%a" == "URL" (
set "URL=%b"
goto startit
) )
Die Datei "D:\4all\reisen\istanbul\verkehr\FHREN~1\Bosp_eminönü_2h_14h30_12tl_SehirHatlari.url" kann nicht gefunden werden.
Имя файла проводника: Bosp_eminönü_2h_14h30_12tl_ Ş ehirHatlar ı .url Файл URL был создан путем перетаскивания следующего URL из chrome http://en.sehirhatlari.com.tr/en/timetable/short-bosphorus-tour-363.html
Команда% windir% \ system32 \ cmd.exe dir показывает: ни Ş, ни ı в конце не отображаются В ПОРЯДКЕ.
И похоже, что .exe вызывается уже с неправильным именем:
Изменить 20150630a:
Я скрываю .bat с помощью Bat_To_Exe_Converter_ (x64) .exe. Я делаю это, например потому что таким образом записи реестра могут быть неизменными, а .exe можно закрепить без дополнительных усилий.
И вы правы, если windows вызывает .bat, все ок.
HKEY_CLASSES_ROOT\IE.AssocFile.URL\Shell\firefox\command
"D:\sources\firefox\_install\firefox.bat" "%1"
Может ли Windows передавать параметры по-разному в зависимости от того, вызывает ли он .bat или .exe?
!!!! @Mofi: Спасибо за расширенную поддержку 1a !!!!
Это не похоже на проблему «конвертера bat в exe», потому что: Пожалуйста, обратите внимание на оператор rem в первой строке. Он немного отличается от постета скриншота .exe в разделе «Правка 20150629». Есть дополнительный оператор «C: \ Users \ gigoelri \ AppData \ Local \ Temp \ F411.tmp \ firefox_pause.bat», «» установлены по-другому, а URL пишется по-другому в конце ... ı .url "" вместо ... i .url "
"%~s1"
- person npocmaka   schedule 24.06.2015