本帖最后由 SQYSQYSQY 于 2019-1-6 14:50 编辑
回复 5# 523066680
我知道问题出在哪了:
%0的返回值是带引号的文件名。而for默认会把带引号的视为字符串。
应改为:- @echo off
- set /a "n=0"
- set "a=%0"
- for /f "tokens=*" %%a in (%a:~1,-1%) do (
- set /a "n+=1"
- if "%%a"==":img_raw_data" goto export
- )
- :export
- if exist 文件 del /q 文件 >nul
- if exist avatar.jpg del /q avatar.gif >nul
- type "%0"|more +%n%>文件
- certutil -decodehex 文件 avatar.gif
- del /q 文件 >nul
- exit /b
- :img_raw_data
- 47494638396102020202800000CC11CC0000002C00000000010001000002024401003B
复制代码 才发现这样有缺陷。不如改为:- @echo off
- set /a "n=0"
- for /f "usebackq" %%a in (%0) do (
- set /a "n+=1"
- if "%%a"==":img_raw_data" goto export
- )
- :export
- if exist 文件 del /q 文件 >nul
- if exist avatar.jpg del /q avatar.gif >nul
- type "%0"|more +%n%>文件
- certutil -decodehex 文件 avatar.gif
- del /q 文件 >nul
- exit /b
- :img_raw_data
- 47494638396102020202800000FFCC220000002C00000000010001000002024401003B
复制代码 但好像仍不支持文件名有&或^等特殊字符 |