我想知道如何使用批处理文件将文件从一个目录复制到另一个目录,然后使用动态名称命名,该名称使用备份日期作为名称。 我知道如何使用xcopy将文件复制到新的DIR(这与我复制的文件的大小有点慢),但我无法弄清楚如何命名它们被动态复制到的文件夹。 [如果有人有更快的解决方案,我会听到它]
我一直试图解决这个问题,我之前已经问过这个问题了,我已经尝试过广泛研究,但我很难理解它是如何工作的。
答案 0 :(得分:0)
运行此批处理代码,您可以看到如何将当前日期分配给环境变量class DispatchState extends Model {
use EventGenerator;
// Define Table Setup with fillabe fields
protected $table = 'dispatch_states';
// Fillable fields in database
protected $fillable = ['state'];
// include timestamps
public $timestamps = true;
// Status __belongs_to_many__ Dispatches
public function dispatches() {
return $this->belongsToMany('App\Classes\Dispatch');
}
}
,以便在备份文件夹的名称中使用。
FolderDate
阅读Find out if file is older than 4 hours in Batch file上的答案和Batch file to delete files older than N days上的答案,了解有关获取和重新格式化日期和时间字符串的详细信息。
使用环境变量值 DATE 重新格式化文件夹名称以格式@echo off
rem Get the current local date and time in a region and language
rem independent format by using Windows Management Instrumentation.
for /F "skip=1 delims=." %%T in ('%SystemRoot%\System32\wbem\wmic.exe OS get localdatetime') do set "LocalDateTime=%%T" & goto ReformatDate
rem Convert the date and time string in format yyyymmddhhmmss like
rem 20151231150357 to a readable format with date only like 2015-12-31.
:ReformatDate
set "FolderDate=%LocalDateTime:~0,4%-%LocalDateTime:~4,2%-%LocalDateTime:~6,2%"
rem Output the date string for the backup folder and delete the 2 variables.
echo Date for backup folder is: %FolderDate%
echo.
set "LocalDateTime="
set "FolderDate="
pause
将比使用yyyy-mm-dd
快得多。但是,使用 DATE 需要了解使用过的计算机上的日期格式,因为它取决于区域和语言设置。
要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。
wmic
echo /?
for /?
pause /?
rem /?
set /?
建议在命令行窗口中运行wmic /?
,以查看命令为处理的命令行的输出,最后生成格式为{的日期字符串{1}}用于备份文件夹名称。
答案 1 :(得分:0)
我最终使用了这个:
@echo off
REM Find Current Year
set varYear=%date:~-4,4%
REM Find Current Month
set varMonth=%date:~-7,2%
REM Find Current Day
set varDay=%date:~-10,2%
REM Find Hour
set varHour=%time:~-11,2%
if %varHour% leq 9 (
call :trim %varHour%
goto :eof
:trim
set varHour=0%*
)
:eof
REM Find Minutes
set varMinutes=%time:~-8,2%
REM Compile Date
set DateTime=%varDay%.%varMonth%.%varYear%__%varHour%.%varMinutes%
mkdir "C:\New\Backup\Folder\%DateTime%_Backup"
xcopy /i "C:\Remote\Server" "C:\New\Backup\Folder\%DateTime%_Backup" /D/S/H/V/C/F/K/Y
exit
我最终不必使用FOR命令。我似乎无法理解它是如何工作的