不完全确定IF语句是否正常工作。我希望它能识别Desktop.ini是否存在,是否具有要重写的正确属性,然后重置属性。
这个IF语句是否符合我的要求?有时它有时会起作用,不管我是否有IF / IF都不是。我想我需要先检查文件是否存在,但我不确定如何。
@ECHO OFF
attrib +s "%CD%"
set ICODIR=%CD%\Icon\
for %%F in ("%ICODIR%"*.ico) do set ICO=%%~nxF
echo %ICO%
echo %ICO:~0,-4%
set ICOINI=Desktop.ini
if exist %ICOINI% attrib -s -h %ICOINI%
echo [.ShellClassInfo] > %ICOINI%
echo IconResource=%ICODIR:~2%%ICO%>>%ICOINI%
echo InfoTip=%ICO:~0,-4%>>%ICOINI%
if not "%2"=="" (
echo FolderType=%2 >> %ICOINI%
)
attrib -a +s +h %ICOINI%
Pause
没有if语句的代码。
@ECHO OFF
attrib +s "%CD%"
set ICODIR=%CD%\Icon\
for %%F in ("%ICODIR%"*.ico) do set ICO=%%~nxF
echo %ICO%
echo %ICO:~0,-4%
set ICOINI=Desktop.ini
attrib -s -h %ICOINI%
echo [.ShellClassInfo] > %ICOINI%
echo IconResource=%ICODIR:~2%%ICO%>>%ICOINI%
echo InfoTip=%ICO:~0,-4%>>%ICOINI%
attrib -a +s +h %ICOINI%
Pause
编辑:它似乎有时起作用的原因,有时并不是因为Windows与批处理文件有关。好像我删除了文件夹中的文件它会起作用,难怪我找不到错误>。<
答案 0 :(得分:2)
我不知道你的第二个参数。尝试:
if not "%~2"=="" (
echo FolderType=%2 >> %ICOINI%
答案 1 :(得分:2)
您提出的唯一问题是Does this IF statement do what I want it to?
答案很明显。 否强>
如果确实如此,你就不会问这个问题。
答案 2 :(得分:2)
尝试这一点以了解您传递的参数。您的问题可能是由许多事情引起的。
我将您的代码修改为
`
@ECHO OFF
echo.1=%1
echo.2=%2
echo.CD=%CD%
attrib +s "%CD%"
set ICODIR=%CD%\Icon\
for %%F in ("%ICODIR%*.ico") do set ICO=%%~nxF
echo %ICO%
echo %ICO:~0,-4%
set ICOINI=Desktop.ini
if exist %ICOINI% attrib -s -h %ICOINI%
echo [.ShellClassInfo] > %ICOINI%
echo IconResource=%ICODIR:~2%%ICO%>>%ICOINI%
echo InfoTip=%ICO:~0,-4%>>%ICOINI%
if not "%~2"=="" (
echo FolderType=%~2 >> %ICOINI%
)
echo.ICOINI=%ICOINI%
attrib -a +s +h %ICOINI%
Pause