我需要帮助返回位于文件夹中的文件的文件名。
我已经读了几次其他问题,答案似乎是:
for /d %F in (*.*) do echo %~nxF
虽然这似乎适用于其他所有人,但是当我在批处理文件中运行它时,它有一个例外,并指出此时不会出现'~nxF'。
我要做的是创建一个批处理文件,该文件将读取图标文件名,然后将特定信息输入desktop.ini
,最后创建具有相应权限或属性的文件。
@echo off
set NAME=%~dp0
for %%* in (.) do set NAME=%%~n*
set FOLDERICO=%NAME%
set ICONSIZES=16 24 32 48 64 128 256
set FOLDERINI=Desktop.ini
attrib +s "%CD%"
if exist %FOLDERINI% attrib -s -h %FOLDERINI%
echo [.ShellClassInfo] > %FOLDERINI%
echo IconResource=\[Video]\[HD Films]\%FOLDERICO%\Icon\%FOLDERICO%.ico,0 >> %FOLDERINI%
if not "%2"=="" (
echo FolderType=%2 >> %FOLDERINI%
)
attrib -a +s +h %FOLDERINI%
我认为可以通过某种方式改进代码以从根目录运行它而不是特定文件夹。
编辑:更新了我的文件,现在看起来像这样:
@ECHO OFF
attrib +s "%CD%"
set ICODIR=%CD%\Icon\
for %%F in ("%ICODIR%"*.ico) do set ICO=%%~nxF
echo %ICO%
set ICOINI=Desktop.ini
if exist %ICOINI% attrib -s -h %ICOINI%
echo [.ShellClassInfo] > %ICOINI%
echo IconResource=%ICODIR:~2%%ICO%,0 >> %ICOINI%
if not "%2"=="" (
echo FolderType=%2 >> %ICOINI%
)
attrib -a +s +h %ICOINI%
Pause
我需要将其放入for循环扫描根目录的每个子目录。