Tim*_*wan 6 windows cmd date batch-file file-rename
我觉得我咬的比我咬得多得多.
我是一名宫廷记者,在明尼苏达州法院系统工作.我们制定了新的电子票据提交政策,因为许多记者不再打印纸质票据.不同品牌的报告机器创建具有不同命名约定的文件,并且我们希望标准化名称,以便区管理中的某人可以轻松地找到正确的注释(如果我们不在身边).
因此,我们要将FILE.001,FILE.002和20151018-082815.sgstn重命名为文件创建日期.当然,sgstn文件有一个唯一的名称,但创建FILE.*文件的无处不在的编写者确实需要重命名,标准化将帮助所有人.我正在创建一个CMD文件,该文件也将对法官的姓名和作家品牌进行民意调查,因此任何从存储中取出笔记的人都会找到他们正在寻找的内容:"2015-10-18琼斯法官,Stentura作家. 001"
我发现有很多解决方案可以使用TODAY的日期和时间重命名文件,但是我们希望用他们自己的日期和时间重命名它们.
我是Windows 7 Pro中的标准用户,无法安装第三方软件.Windows允许个人用户设置他们的首选日期样式,dbenham和其他人在这里向我展示了如何从注册表中获取该样式:
:: For REG.EXE 3.0 (Windows XP) and later versions
FOR /F "tokens=3" %%A IN (
'REG QUERY "HKCU\Control Panel\International" /v sShortDate'
) DO (SET sShortDate=%%A)
Echo %sShortDate%
Run Code Online (Sandbox Code Playgroud)
这将返回yyyy-MM-dd或dM-yy或用户选择的任何内容.
然后我可以测试以查看字符串的不同部分的内容:
for /f "tokens=1,2,3 delims=/-" %%A in ("%sShortDate%") do (
for /f "tokens=1" %%D in ("%%A") do (
set Part1=%%D
)
for /f "tokens=1" %%D in ("%%B") do (
set Part2=%%D
)
for /f "tokens=1" %%D in ("%%C") do (
set Part3=%%D
)
)
echo Part1 = %Part1%
echo Part2 = %Part2%
echo Part3 = %Part3%
Run Code Online (Sandbox Code Playgroud)
但这一切都变得非常笨拙,而且在这里和其他地方经过24小时阅读后,我只有一半的时间.在Windows中,在CMD提示符或任何命令行可用工具中,是否真的没办法以可预测的格式获取文件的日期并使用该日期?
任何人都可以怜悯我并给我们一个不那么繁琐的方法来找出用户的特定系统认为日期应格式化为什么,从而一致地重命名所有丢弃在CMD快捷方式上的文件?
最后,这是我在这里的第一篇文章.所有建设性的批评都乐意接受.认真.
- Timothy J. McGowan
编辑补充说:也许我一直在思考这个问题.它是注册表中用户的配置单元,我正在轮询日期格式.我们应该能够从命令行写入我们自己的配置单元; 对?
所以我可以读取用户的首选日期格式,将其保存到变量,强制使用我想要使用的日期格式,处理文件,然后重置用户的日期格式.对?值得一试.
我会报告它是否有效,但是更多的评论非常受欢迎!
也许这不是我提出的问题的完整答案,但这应该是我获得可预测日期所需的全部内容。
可以从注册表中保存用户的首选日期样式,强制使用您想要使用的日期样式,开展您的业务,然后返回用户的首选日期样式(假设他们不会在运行过程中取消批处理文件) 。
输出很混乱,但它只是证明了这个概念是有效的。
@echo off
:: replace and then restore date style in Windows registry.
:: find current date style; save to environment variable OriginalsShortDate
FOR /F "tokens=3" %%A IN (
'REG QUERY "HKCU\Control Panel\International" /v sShortDate'
) DO SET OriginalsShortDate=%%A
:: display current date style as reflected by date of this CMD/BAT file
echo Current date style to be saved: %OriginalsShortDate%
echo Looks like this:
dir %0
echo Press any key to set yyyy-MM-dd date style
pause
:: force preferred date style and hide success message
reg add "HKCU\Control Panel\International" /v sShortDate /d yyyy-MM-dd /f >nul
:: prove it's changed
:: //////////// here's where you do your business \\\\\\\\\\\\
echo Check file's date now.
dir %0
echo (Your Windows task bar may not reflect change immediately.)
echo.
echo Press any key to set MM-dd-yy date style
pause
:: force next style
reg add "HKCU\Control Panel\International" /v sShortDate /d MM-dd-yy /f >nul
:: prove it's changed
echo Check file's date now; it will be in MM-dd-yy format.
dir %0
echo Press any key to return date format to your preferred style.
pause
:: return to user's original setting
reg add "HKCU\Control Panel\International" /v sShortDate /d %OriginalsShortDate% /f >nul
:: prove it's back to normal
dir %0
echo Your original, presumably preferred, date style has been reset.
echo Give your Windows task bar some time to update.
Run Code Online (Sandbox Code Playgroud)