@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文件。