.BAT 不提取文件,但 cmd-line 做

.BAT don't extract the file but cmd-line do

我使用以下代码创建了文件 extract.bat:

@echo off

7z x "f:\Downloads\*.zip" –o"f:\Downloads"
7z x "f:\Downloads\*.rar" –o"f:\Downloads"
7z x "f:\Downloads\*.7z" –o"f:\Downloads"

pause

如果我打开 cmd 和 运行 代码:

7z x "f:\Downloads\*.zip" –o"f:\Downloads"

有效,但如果我打开 .BAT 文件,则不会解压缩 zip。

为什么???

谢谢!

更新:运行extract.bat后的输出:

F:\Programas>7z x "F:\Downloads\*.zip" ΓÇôo"f:\Downloads"

7-Zip 19.00 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2019-02-21

Scanning the drive for archives:
1 file, 731338124 bytes (698 MiB)

Extracting archive: F:\Downloads\PromoVideo[720p].zip
--
Path = F:\Downloads\PromoVideo[720p].zip
Type = zip
Physical Size = 731338124


No files to process
Everything is Ok

Files: 0
Size:       0
Compressed: 731338124

F:\Programas>pause
Press any key to continue . . .

并在运行命令后直接输出到cmd:

Microsoft Windows [Version 10.0.18362.900]
(c) 2019 Microsoft Corporation. All rights reserved.

C:\Users\Diego>7z x "F:\Downloads\*.zip" -o"f:\Downloads"

7-Zip 19.00 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2019-02-21

Scanning the drive for archives:
1 file, 731338124 bytes (698 MiB)

Extracting archive: F:\Downloads\PromoVideo[720p].zip
--
Path = F:\Downloads\PromoVideo[720p].zip
Type = zip
Physical Size = 731338124

Everything is Ok

Size:       731544885
Compressed: 731338124

C:\Users\Diego>

如你所见,如果我运行命令:

7z x "F:\Downloads\*.zip" –o"f:\Downloads"

直接进入cmd就可以了,但是如果我打开.BAT文件就不行了。

有什么想法吗?

谢谢!

回显了 .bat 文件:

F:\Programas>7z x "F:\Downloads\*.zip" ΓÇôo"f:\Downloads"

ΓÇô OEM codepage 437 is hex bytes E2 80 93, which represent the en-dash in UTF-8 编码。但是 7z 需要一个普通的破折号 -o 开关,因此它不会将 ΓÇôo(甚至是破折号 –o)识别为一个开关。

要解决此问题,请确保:

  • .bat 文件中使用普通的 - 破折号(不要使用任何其他可能看起来像破折号的奇特字符);

  • .bat 文件保存为纯文本(不是 UTF-8)。