Board logo

标题: [文件操作] [已解决]求助手动备份文件的BAT代码区别 [打印本页]

作者: jave000    时间: 2023-3-21 09:54     标题: [已解决]求助手动备份文件的BAT代码区别

本帖最后由 jave000 于 2023-3-21 16:53 编辑

求助以下两个代码,代码主体一样,都是对与批处理文件同目录下的指定文件进行备份,并对文件名加上当天日期的后缀,然后将备份文件丢入Backup子目录内。
第一个代码包含了具体文件名,可以正常备份,备份文件也包含了日期后缀;
第二个代码使用通配符文件名,是我想要的形式,这样丢入任意文件夹内都能运行,它也确实能备份,但是备份文件始终不带日期后缀。
请问要如何修改才能让第二个代码既能使用通配符,也能带有日期后缀?
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f %%i in ('powershell -c "'{0:yyyy.MM.dd}' -f (get-date)"') do (
  3.     set "Today=%%i"
  4. )
  5. echo f |xcopy /y "%~dp0\123.xlsx"  "%~dp0\123_%Today%.xlsx"
复制代码
--------------------------------------------------------------------------------------------------------------
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f %%i in ('powershell -c "'{0:yyyy.MM.dd}' -f (get-date)"') do (
  3.     set "Today=%%i"
  4. )
  5. echo f |xcopy /y "%~dp0\*.xlsx"  "%~dp0\*_%Today%.xlsx"
复制代码

作者: Batcher    时间: 2023-3-21 11:45

回复 1# jave000
  1. @echo off
  2. for /f %%i in ('powershell -c "'{0:yyyy.MM.dd}' -f (get-date)"') do (
  3.     set "Today=%%i"
  4. )
  5. for /f "delims=" %%i in ('dir /b /a-d *.xlsx') do (
  6.     copy /y "%~dp0\%%i"  "%~dp0\%%~ni_%Today%%%~xi"
  7. )
复制代码

作者: jave000    时间: 2023-3-21 13:08

本帖最后由 jave000 于 2023-3-21 13:18 编辑

回复 2# Batcher


    感谢大神,按照我自己的需求,改成了如下。经测试,可以不影响备份子目录内已有的旧有文件。
虽然并不明白为什么xcopy使用通配符会出现那样的状况。
  1. @echo off
  2. for /f %%i in ('powershell -c "'{0:yyyy.MM.dd}' -f (get-date)"') do (
  3.     set "Today=%%i"
  4. )
  5. md Backup
  6. for /f "delims=" %%i in ('dir /b /a-d *.xls*') do (
  7.     copy /y "%~dp0\%%i"  "%~dp0\Backup\%%~ni_%Today%%%~xi"
  8. )
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2