从桌面清理所有文件和文件夹并将其移动到桌面中的BACKUP文件夹时出错


@echo off
set a="%USERPROFILE%DesktopDesktop BU%CurrentDate%"
For /F "tokens=1-5 delims=/-" %%A in ('Date /t') do (SET CurrentDate=%%A%%B%%C)
::echo hi
mkdir "%USERPROFILE%DesktopDesktop BU%CurrentDate%"
::echo dir made
dir %USERPROFILE%Desktop /S /B > %TEMP%files.txt
::echo done
For /F %%A in (%TEMP%files.txt) do move %%A "%USERPROFILE%DesktopDesktop BU%CurrentDate%"
del %TEMP%files.txt

用上面的脚本度过了一段艰难的时光:-它很好地创建了具有适当日期的文件夹-在temp中创建文件,并重定向桌面列表中的输出-但在那之后,它就出现了错误。找不到指定的路径我尝试了很多方法,但都不起作用。你能告诉我如何将桌面上的文件和文件夹移动到桌面上的BACKUP文件夹吗。这样我的桌面看起来就干净了。我还想排除一些项目被移动。

尝试将for语句更改为:

For /F "usebackq tokens=*" %%A in ("%TEMP%files.txt") do move "%%A" "%USERPROFILE%DesktopDesktop BU%CurrentDate%"

此外,按照目前的方式,您的目标目录末尾将有一个空间,它将尝试将Desktop BU移动到自己中。最后,dir命令中不需要/s开关,因为移动目录无论如何都会移动其所有子目录。试试这个:

@echo off
setlocal
set CurrentDate=%date:~0,2%%date:~3,2%%date:~6,4%
set desktop=%USERPROFILE%Desktop
dir "%desktop%" /B | find /v "Desktop BU"> "%TEMP%files.txt"
mkdir "%desktop%Desktop BU%CurrentDate%" 2>NUL
For /F "usebackq tokens=*" %%A in ("%TEMP%files.txt") do move "%desktop%%%A" "%desktop%Desktop BU%CurrentDate%"
del "%TEMP%files.txt"

或者这里有另一种不需要中间files.txt:的方法

@echo off
setlocal
set CurrentDate=%date:~0,2%%date:~3,2%%date:~6,4%
set desktop=%USERPROFILE%Desktop
mkdir "%desktop%Desktop BU%CurrentDate%" 2>NUL
for /f "tokens=*" %%A in ('dir "%desktop%" /b ^| find /v "Desktop BU"') do (
    move "%desktop%%%A" "%desktop%Desktop BU%CurrentDate%"
)

最新更新