Windows批处理文件和带有&符号的处理路径

时间:2019-06-18 00:26:12

标签: windows batch-file command-line ampersand

我是编码Windows批处理文件的新手,正在努力获取此代码来处理&符。

批处理文件旨在使用imagemagick将一个文件夹树中的图像创建到另一个文件夹树中的缩略图。 一切正常,直到路径中出现“&”号为止。对于大多数命令,双引号可以解决此问题,但是当命中“如果不存在“%thumbpath%”“时,如果%thumbpath%中有“&”号,它将掉下来。

我尝试使用短的8.3版本的路径,虽然它不会失败,但是如果文件不存在,它也不会返回true。

@echo off
setlocal enableextensions
cd /D "%~dp0"
call :processFiles
pause
goto :eof

:processFiles
for /R %%f in (*.jpg) do call :processFile "%%f", "%%~nxf", "%%~pf", "%%~df"


:processFile
:: parameters 1=full path, 2=filename, 3=path(no drive no file), 4=drive
setlocal ENABLEDELAYEDEXPANSION
set "source=%~1"
set fileName=%~2
set "folder=%~4%~3"

:: replace media path with thumbs folder
set "folder=%folder:\media\=\media\thumbs\%"

:: create the directory tree if required
if not exist "%folder%" md "%folder%"

set "thumbpath=%folder%%fileName%"

:: the following line causes an error when there is an ampersand in %thumbpath%
if not exist "%thumbpath%" (
    magick "%source%" -resize 250x250 -unsharp  0x6+0.5+0 "%thumbpath%"
)

exit /b

1 个答案:

答案 0 :(得分:0)

坦白的时间...我的代码回声%thumbpath%中的一行在magick行之前。这是罪魁祸首,因为我没有对%thumbpath%进行双引号。