@echo off
set a="%USERPROFILE%\Desktop\Desktop BU\%CurrentDate%"
For /F "tokens=1-5 delims=/-" %%A in ('Date /t') do (SET CurrentDate=%%A%%B%%C)
::echo hi
mkdir "%USERPROFILE%\Desktop\Desktop 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%\Desktop\Desktop BU\%CurrentDate%\"
del %TEMP%\files.txt
使用上述脚本有一段时间: - 它使用正确的日期很好地创建文件夹 - 在temp中创建文件并重定向桌面列表中的输出 - 但之后就会出错。找不到指定的路径 我尝试了很多东西,但它不起作用。您能告诉我如何将桌面中的文件和文件夹移动到桌面上的BACKUP文件夹中。这样我的桌面看起来很干净。我还想排除一些项目被移动。
答案 0 :(得分:0)
尝试将for
语句更改为:
For /F "usebackq tokens=*" %%A in ("%TEMP%\files.txt") do move "%%A" "%USERPROFILE%\Desktop\Desktop 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%\"
)