带空格中文文件名在ahk脚本中会出错,求教如何解决? Topic is solved

遇到了问题?请先进行搜索(中文和英文),然后在此提问

Moderators: tmplinshi, arcticir

laozhhaiJohn
Posts: 24
Joined: 20 Mar 2021, 18:18

带空格中文文件名在ahk脚本中会出错,求教如何解决?

Post by laozhhaiJohn » 28 Mar 2021, 02:51

英文文件名带空格的在ahk脚本中运行良好,但是,中文文件名带空格的,在ahk脚本中会出错,怎么解决这个问题呢?
试验了很多办法都不能解决,特地请教各位专家。 :crazy: :crazy: :crazy:
我的环境为:
系 统: windows10--19041中文教育版
ahk版本: 最新版的AutoHotkey Unicode 64-bit

Code: Select all

FileCopy, C:\Windows\Media\Windows Notify Email.wav, s:\Windows_Notify_Email.wav
;复制成功

FileCopy, C:\Windows\Media\Windows 导航开始.wav, s:\Windows_111.wav
;复制失败

SoundPlay, C:\Windows\Media\Windows Notify Email.wav,wait
;播放成功

SoundPlay, C:\Windows\Media\Windows 导航开始.wav ,wait
;播放失败
sanmaodo
Posts: 45
Joined: 28 Aug 2020, 01:39

Re: 带空格中文文件名在ahk脚本中会出错,求教如何解决?  Topic is solved

Post by sanmaodo » 28 Mar 2021, 03:03

把脚本存为 UTF-8 with BOM 编码试试看
laozhhaiJohn
Posts: 24
Joined: 20 Mar 2021, 18:18

Re: 带空格中文文件名在ahk脚本中会出错,求教如何解决?

Post by laozhhaiJohn » 28 Mar 2021, 03:22

sanmaodo wrote:
28 Mar 2021, 03:03
把脚本存为 UTF-8 with BOM 编码试试看
非常感谢您的回复, 但是我忘记说了:

1、我的系统是win10教育版64位,
2、ahk版本是1.1.33.06的64位U版,
3、脚本已经是 UTF-8 with BOM.

所以,可能编码问题不是解决办法. 无论如何,还是感谢您的回复.

Code: Select all

MsgBox % A_IsUnicode ? "Unicode" : "ANSI"
MsgBox, % Asc("一")
MsgBox, % Asc(" ")
MsgBox, % "a" . chr(32) . "b"
文件名 := % A_WinDir . "\Media\Windows 导航开始.wav"
AttributeString := FileExist(文件名)
AttributeString := FileExist("C:\Windows\Media\Windows 导航开始.wav")
AttributeString := FileExist("C:\Windows\Media\Alarm10.wav")
文件名 := % A_WinDir . "\Media\Windows 导航开始.wav"
SoundPlay, % 文件名 ;提示音

ErrorLevel := 99
文件名 := "C:\Windows\Media\Windows" . A_space . "导航开始.wav"
SoundPlay, C:\Windows\Media\Windows%A_space%导航开始.wav

ErrorLevel := 99
文件名 := chr(32) . "导航开始.wav"
SoundPlay, C:\Windows\Media\Windows%文件名%, wait

ErrorLevel := 99
文件名 := "C:\Windows\Media\Windows 导航开始.wav"
SoundPlay, C:\Windows\Media\Windows{32}导航开始.wav ,wait

ErrorLevel := 99
FileCopy, C:\Windows\Media\Windows Notify Email.wav, C:\Windows\Media\Windows_Notify_Email.wav

ErrorLevel := 99
FileCopy, C:\Windows\Media\Windows Notify Email.wav, s:\Windows_Notify_Email.wav

ErrorLevel := 99
FileCopy, C:\Windows\Media\Windows 导航开始.wav, C:\Windows\Media\Windows_导航开始.wav

ErrorLevel := 99
FileCopy, C:\Windows\Media\Windows 导航开始.wav, s:\Windows_111.wav

ErrorLevel := 99
文件名 := "C:\Windows\Media\Windows%A_space%导航开始.wav"
SoundPlay, "C:\Windows\Media\Windows 导航开始.wav"

ErrorLevel := 99
文件名 := % A_WinDir . "\Media\Windows" . " " . "导航开始.wav"
SoundPlay, % A_WinDir . "\Media\Windows" . " " . "导航开始.wav"

ErrorLevel := 99
文件名 := % A_WinDir . ("\Media\Windows" . " " . "导航开始.wav")
SoundPlay, % A_WinDir . ("\Media\Windows" . " " . "导航开始.wav")

ErrorLevel := 99
文件名 := % A_WinDir . ("\Media\Windows" . " " . "导航开始.wav")
SoundPlay, %A_WinDir%\Media\Windows 导航开始.wav

;;没有空格没问题
ErrorLevel := 99
文件名 := % A_WinDir . "\Media\Alarm10.wav"
SoundPlay, %文件名% , wait  ;提示音
SoundPlay, 文件名 ;提示音 ;错误表示法
SoundPlay, % 文件名 , wait  ;提示音

;;英文的有空格也没问题
ErrorLevel := 99
文件名 := "C:\Windows\Media\Windows Notify Email.wav"
SoundPlay, C:\Windows\Media\Windows Notify Email.wav,wait
SoundPlay, %A_WinDir%\Media\Windows Notify Email.wav,wait



sanmaodo
Posts: 45
Joined: 28 Aug 2020, 01:39

Re: 带空格中文文件名在ahk脚本中会出错,求教如何解决?

Post by sanmaodo » 28 Mar 2021, 04:30

@laozhhaiJohn
C:\Windows\Media\ 这个文件夹有点奇怪,
比如这个文件: Windows 导航开始.wav ,用 shift+右键 将其复制为路径,
得到的文件名是: Windows Navigation Start.wav,或许,这才是它真实的文件名。

另外,我在其它目录复制文件名是中文且带空格的文件,是成功的。
laozhhaiJohn
Posts: 24
Joined: 20 Mar 2021, 18:18

Re: 带空格中文文件名在ahk脚本中会出错,求教如何解决?

Post by laozhhaiJohn » 28 Mar 2021, 05:40

sanmaodo wrote:
28 Mar 2021, 04:30
@laozhhaiJohn
C:\Windows\Media\ 这个文件夹有点奇怪,
比如这个文件: Windows 导航开始.wav ,用 shift+右键 将其复制为路径,
得到的文件名是: Windows Navigation Start.wav,或许,这才是它真实的文件名。

另外,我在其它目录复制文件名是中文且带空格的文件,是成功的。
非常好的发现!!!确实,改用其英文名称后一切就顺利了。同时也试验了其他中文加空格的文件,确实如您所说那样一切正常!!非常感谢!!!

这个问题的产生可能是微软为适应各种语言代码而作的一个特殊处理吧。
Post Reply

Return to “请求帮助”