windows 复制文件或目录bat脚本

该批处理脚本用于检查用户是否提供目标路径,然后获取当前日期作为备份后缀,根据源路径是文件还是文件夹进行相应处理,创建备份并保存到指定目录。如果源是文件夹,会递归复制所有内容;如果是文件,则简单复制并添加日期后缀。注意,批处理脚本需要以ANSI编码保存,否则可能会遇到错误。
摘要由CSDN通过智能技术生成
@echo off
setlocal enabledelayedexpansion
:: 检查是否有源和目标参数传入
IF "%~1"=="" (
  echo Please specify a target path.
  goto end
)


:: 获取当前日期作为后缀,格式为 YYYYMMDD
set date=%date:~0,4%%date:~5,2%%date:~8,2%

:: 拼接源路径(包括路径和名称
set source_path=%cd%\%1
set target_dir="C:\Users\liang\Desktop\zhsl\backup\"

:: 根据源路径获取源类型(文件或文件夹)
if exist "%source_path%\*" (

  :: 处理源为文件夹的情况
  set source_type=dir
  set source_name=%~n1
  set target_name=!source_name!_!date!
  set target_path=%target_dir%\!target_name!

  if not exist "!target_path!" (
    mkdir "!target_path!"
  )

  xcopy "%source_path%" "!target_path!" /E /C /I /Q /H

) else (

  :: 处理源为文件的情况
  set source_type=file
  for %%i in ("%source_path%") do (
    set source_name=%%~ni
    set source_extension=%%~xi
  )
  set target_name=!source_name!_!date!!source_extension!
  set target_path=%target_dir%\!target_name!

  copy "%source_path%" "!target_path!"

)

:: 输出复制后的目标路径
echo !target_path!
:end

可能出现的问题:'锘緻echo' 不是内部或外部命令,也不是可运行的程序或批处理文件

解决办法:批处理只支持ANSI编码,而你的批处理可能是UTF8,用文本编辑器(记事本、Notepad++、Sublime Text 3等)打开,另存为ANSI编码的bat文件。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值