variables - Windows 命令行脚本嵌入了空白字符
问题描述
我想将一个文件复制到另一个名称中包含时间和日期的文件。
我使用下面的语句,但问题是早于上午 10 点的时间值(小时值只有一个数字)有一个空白字符而不是前导零,这是我想要的。
copy "M:\Production Schedule.xlsm" m:\gsdBackups\ProductionSchedule%date:~-4,4%%date:~-10,2%%date:~-7,2%_%time:~0,2%%time:~3,2%%time:~6,0%.xlsm
在上面的示例中,当我在 9:50 运行它时,我得到了结果名称:
GSDProductionSchedule20180509_ 950.xlsm
我不理解上述复制命令中发生的所有格式。而不是下面的“950”,我想要“0950”
解决方案
- 作为一项重复性任务,这应该是一个隐藏详细信息的批处理文件。
- 使用 wmic 或 PowerShell 以用户设置/区域独立格式获取日期/时间
- 将批处理文件命名为扩展名为 .bat 或 .cmd 的任何名称,并将其放在路径中的文件夹中
:: Q:\Test\2018\05\09\SO_50256566.cmd
@echo off
Set "Src=M:\Production Schedule.xlsm"
Set "Dst=M:\gsdBackups"
:: Get date and time in a user settinhs/locale independent format
For /f %%Y in ('
powershell -NoP -C "(get-date).AddDays(0).ToString('yyyyMMdd_HHmm')"
') Do Set _DT=%%Y
:: get source and use for variable modifiers to get name extension separated
For %%F in ("%Src%") Do echo copy "%%~F" "%Dst%\%%~nF_%_DT%%%~xF"
样本输出:
> SO_50256566.cmd
copy "M:\Production Schedule.xlsm" "M:\gsdBackups\Production Schedule_20180509_1743.xlsm"
如果您觉得没问题,请删除echo
副本前面的内容。
推荐阅读
- rust - 有效地检查 vec 中的每个项目与其他项目并进行变异
- css - 可以获取/设置字符的宽度吗?
- python-3.x - 在任何子目录中找不到任何匹配版本“8”的 cudnn.h
- php - 如何知道 Post 请求传递了哪些值
- java - 您如何修改非注释枚举的默认枚举(反)序列化但在杰克逊中保留标准行为(@JsonProperty/@JsonValue/...)?
- sql - 将 VirtualBox 上的 Oracle 来宾连接到 macOS 主机
- azure-pipelines - 将一些工作项字段映射到评论
- xslt - Saxon.Api.StaticError: 'xsl:import-schema requires Saxon-EE' with .net API
- java - 有没有办法在 AtomicReference 上设置锁定
- prolog - 编辑 Prolog 程序以输出计算结果