我想在一个文件中搜索“URL=”。由于我对这方面的知识很菜,所以我从stackoverflow收集了一些代码片段……;-)
http://www.dostips.com/forum/viewtopic.php?f=3&t=2836&start=30
我的问题: 如果文件或路径包含德语的“ö/ä/ü”或其他外语中的字母/符号在路径或文件名中
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 文件是在 Windows 中这样调用的
HKEY_CLASSES_ROOT\InternetShortcut\shell\chrome\command "D:\sources\chrome\portable\chrome\chrome.exe" "%1"
.bat文件开头加上“rem %cmdcmdline%”看起来很好
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:尝试使用Mofi的方法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文件是通过从Chrome中拖放以下URL创建的: URL: http://en.sehirhatlari.com.tr/en/timetable/short-bosphorus-tour-363.html
%windir%\system32\cmd.exe dir命令显示: 结尾的Ş和ı都无法正常显示。
而且,.exe似乎已经以错误的名称被调用了:
编辑20150630a:
我使用Bat_To_Exe_Converter_(x64).exe将.bat转换为.exe。我这样做是因为这样可以保持注册表条目不变,并且可以轻松固定.exe。
你是对的,如果windows调用.bat,一切正常。
HKEY_CLASSES_ROOT\IE.AssocFile.URL\Shell\firefox\command
"D:\sources\firefox\_install\firefox.bat" "%1"
是否可以这样说,无论是调用.bat还是.exe文件,Windows在传递参数时是否有所不同?
!!!! @Mofi:感谢您的扩展1a支持 !!!!
这似乎不是“bat到exe转换器”的问题,因为: 请看第一行rem语句。 它与在20150629编辑中发布的.exe截图相差很大。 有一个额外的语句“C:\ Users \ gigoelri \ AppData \ Local \ Temp \ F411.tmp \ firefox_pause.bat”,“”设置不同,并且URL末尾的拼写不同 ... ı .url“”而不是... i .url“
"%~s1"
。 - npocmaka