一天一篇批处理之——Part3:复制/移动文件命令move,copy,xcopy

一,move
Move是一个移动文件/文件夹的命令
例1.1
move a.txt \file\
move file \file2\
显示:
移动了1个文件 (即a.txt文件被移动到『file』文件夹中)
移动了1个目录 (即『file』文件夹又被移动到了『file2』文件夹中)
最终会在『file2』文件夹中看到『file』文件夹,在『file』文件夹中看到文件a.txt
注:当使用move语句时目标文件夹必须能找到,不支持新建文件夹,但是指向若是文件(该指向的文件并不存在)则会起到文件重命名的效果。
例1.2
move a.txt a2.bat
显示:
移动了1个文件 (实际效果是将a.txt文件变为a2.bat文件)


二,copy
Copy是一个复制文件的命令
例2.1
copy a.txt \file\
copy file \file2\
显示:
复制了1个文件 (即a.txt文件被复制到『file』文件夹中)
复制了1个文件 (即『file』文件夹中的所有文件又被复制到了『file2』文件夹中)
最后会在『file2』文件夹中看到两个a.txt文件,在『file』文件夹中看到一个a.txt文件。但是『file』文件夹本身不会被复制到『file2』中去。


三,Xcopy 与copy区别:
Xcopy 支持文件/文件夹新建,比如要将a.txt文件拷贝到『file』文件夹中,若所在路径没有『file』这个文件或者文件夹的情况下执行这两个命令区别如下,
例3.1:
copy a.txt \file\
显示:
系统找不到指定路径
已复制 0个文件
例3.2:
Xcopy a.txt \file\
显示:
E:a.txt
复制了1个文件
这时在E盘(脚本所在路径下)会自动创建『file』文件夹,并将a.txt文件复制进去。
当然如果file后面去掉斜杠『\』,系统要求做出判断是建立文件还是文件夹
例3.3:
Xcopy a.txt \file
显示:
目标\file是文件名
还是目录名
<F=文件,D=目录>?
这时按D则会E盘(脚本所在路径下)会自动创建『file』文件夹,并将a.txt文件复制进去。

PS:纯手工制作,新人一枚,一起学习,个人笔记,如有不妥,感谢指正!

一天一篇批处理之——Part3:复制/移动文件命令move,copy,xcopy一,moveMove是一个移动文件/文件夹的命令例1.1move a.txt \file\move file \file2\显示:移动了1个文件(即a.txt文件被移动到『file』文件夹中)移动了1个目录(即『file』文件夹又被移动到了『file2』文件夹中)最终会在『file2 将批量 移动 文件 至指定 文件 夹.bat及所有需 移动 至指定 文件 夹的 文件 放在同一个 文件 夹里,选中批量 移动 文件 至指定 文件 夹.bat右键编辑,按文档中的格式,处理好 文件 名 及 对应 文件 夹,可借助excel批量处理,保存,关闭。 双击批量 移动 文件 至指定 文件 夹.bat,即可完成批量 移动 指定 文件 至指定 文件 夹。 下载地址:(访问密码: 52... @echo off #从本行开始关闭回显。一般 批处理 第一行都是这个 echo on #从下一行开始打开回显 echo #显示当前是 echo off 状态还是 echo on 状态 echo. #输出一个”回车换行”,空白行 #(同echo, echo; echo+ echo[ echo] echo/ echo) 2 errorlevel echo %error
要使用 Windows 批处理 命令 移动 一个 文件 ,你需要使用 命令 “move”,它可以将 文件 从一个位置 移动 到另一个位置。例如,如果你想将 文件 “example.txt”从当前目录 移动 到“C:\temp”,你可以在 命令 行中输入“move example.txt C:\temp”。 - `/m`:指定要查找的 文件 名匹配模式,这里是所有 文件 。 - `/d -3`:指定 文件 创建时间超过 3 天的 文件 。 - `/c`:指定要执行的 命令 ,这里是删除 文件 。 - `@path`:表示 文件 的完整路径。 请注意,上面的代码仅适用于 Windows 系统。如果您使用的是其他系统,请查找相应的 命令 。 ### 回答2: 实现上述功能,可以使用 批处理 脚本 来进行操作。以下是一个可以实现删除/备份目录下创建时间超过3天的 文件 批处理 脚本 : ``` batch @echo off set "target_dir=C:\path\to\your\directory" // 设置目标目录 set cutoff_date=%date% powershell -command "& { $limit=(Get-Date).AddDays(-3); Get-ChildItem '%target_dir%' -Recurse | Where-Object { !$_.PSIsContainer -and $_.CreationTime -lt $limit } | ForEach-Object { $_.FullName } }" >archive.txt for /f "delims=" %%G in (archive.txt) do ( echo %%G REM 备份操作 xcopy "%%G" "C:\path\to\backup\directory" REM 删除操作 del "%%G" /q /f del archive.txt 解释说明: 1. 首先,我们需要将目标目录设置为“target_dir”。将其替换为你要操作的目标目录的实际路径。 2. 接下来,使用PowerShell 命令 来获取目标目录中所有创建时间早于3天的 文件 的路径,并将其输出到一个名为“archive.txt”的 文件 中。 3. 然后,使用for循环逐行读取“archive.txt” 文件 中的每个 文件 路径,并执行相应的操作。 - 若要备份 文件 ,可以使用“ xcopy 命令 ,将 文件 复制 到一个备份目录中,将"C:\path\to\backup\directory"替换为你要备份到的实际路径。 - 若要删除 文件 ,可以使用“del” 命令 ,删除 文件 ,其中“/q”参数表示安静模式(不显示确认提示),“/f”参数表示强制删除只读 文件 。 4. 最后,删除“archive.txt” 文件 。 请注意,此 脚本 使用了PowerShell 命令 来获取创建时间早于3天的 文件 的路径。因此,确保你的系统支持PowerShell。如果不支持PowerShell,可以使用其他方法来实现相同的功能。 ### 回答3: 批处理 是一种用来自动执行一系列 命令 脚本 。您可以编写一个 批处理 来删除或备份目录下创建时间超过3天的 文件 。 下面是一个简单的 批处理 示例,用于删除/backup目录下创建时间超过3天的 文件 : ``` batch @echo off setlocal set "backup_dir=C:\backup" set "days=3" for /f "delims=" %%a in ('dir /b /a:-d-h-s "%backup_dir%\*" ^| findstr /r /i /l /c:"^[^ ]* *[0-9]* \[/][0-9]*.*"') do ( for /f "usebackq tokens=2,* delims= " %%b in (`dir /T:C "%backup_dir%\%%a" ^| findstr /v "^[^0-9]"`) do ( call :comparedate "%%b %%c" if !datediff! gtr %days% ( echo Deleting file: "%%a" del "%backup_dir%\%%a" /F endlocal goto :eof :comparedate setlocal set "targetdate=%~1" set "currdate=%date% %time%" set "targetdate=!targetdate:,=.!" set "currdate=!currdate:,=.!" for /f "tokens=1-6 delims=." %%a in ("!targetdate! !currdate!") do ( set /a "yy1=10000%%a%%10000, mm1=100%%b%%100, dd1=100%%c%%100, hh1=100%%d%%100, nn1=100%%e%%100, ss1=100%%f%%100" set /a "datediff=(yy1-yy)*365+(mm1-mm)*30+(dd1-dd)" endlocal & set "datediff=%datediff%" goto :eof 此 批处理 脚本 首先设置了变量`backup_dir`为备份目录的路径,设置`days`为期望超过多少天的阈值。然后,它使用`for`循环遍历`dir` 命令 查找到的目录下的所有 文件 。使用`findstr`筛选出创建日期信息。然后, 批处理 将获取的日期与当前日期进行比较,并计算它们之间的日期差。如果日期差大于`days`,则使用`del` 命令 删除 文件 。 使用这个 批处理 前,请确保将`backup_dir`设置为要处理的实际备份目录,并根据需要更改`days`参数。请注意, 批处理 脚本 具有潜在的风险,因此,请谨慎测试和使用。 希望这对您有帮助!