使用CMD中的文件日期重命名文件

时间:2015-10-18 20:49:49

标签: windows date batch-file cmd file-rename

我觉得我咬的东西比我能咬的多得多。

我是一名宫廷记者,在明尼苏达州法院系统工作。我们制定了新的电子票据提交政策,因为许多记者不再打印纸质票据。不同品牌的报告机器创建具有不同命名约定的文件,我们希望标准化名称,以便区管理中的某人可以轻松找到正确的笔记,如果我们不在。

因此,我们要将FILE.001,FILE.002和20151018-082815.sgstn重命名为文件创建日期。当然,sgstn文件有一个唯一的名称,但创建FILE。*文件的无处不在的编写者确实需要重命名,标准化将帮助所有人。我正在创建一个CMD文件,该文件也将对法官的姓名和作家品牌进行民意调查,因此任何从存储中取出笔记的人都会找到他们正在寻找的内容:“2015-10-18 Judge Jones,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%

这将返回yyyy-MM-dd或d-M-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%

但是这一切都变得非常笨拙,而且在这里和其他地方经过24小时阅读后,我只有一半的时间。在Windows中,在CMD提示符或任何命令行可用工具中,是否真的没办法以可预测的格式获取文件的日期并使用该日期?

任何人都可以怜悯我并给我们一个不那么麻烦的方法来找出用户的特定系统认为日期应格式化为什么,从而一致地重命名所有丢弃在CMD快捷方式上的文件?

最后,这是我在这里发表的第一篇文章。所有建设性的批评都乐意接受。严重。

- Timothy J. McGowan

编辑添加: 也许我一直在思考这个问题。它是注册表中用户的配置单元,我正在轮询日期格式。我们应该能够从命令行写入我们自己的配置单元;正确?

因此,我可以阅读用户的首选日期格式,将其保存到变量,强制使用我想要使用的日期格式,处理文件,然后重置用户的日期格式。对?值得一试。

我会报告它是否有效,但是更多的评论非常受欢迎!

2 个答案:

答案 0 :(得分:1)

第一个想法:

使用分隔符获取文件日期或名称或扩展名

 b
lottery
 a
 t

  b
  o
  a
lottery

   b
   o
   a
lottery

编辑我

以YYYY-MM-DD获取日期:

public class Assg2
{
    public static void main(String[] args)
    {

            String w1 = args[0];
            String w2 = args[1];

            int numberOfCrosses = 0;




            for(int i=0; i < w1.length(); i++)
            {       
                for(int j=0; j < w2.length(); j++)
                {


                    if(w1.charAt(i) == w2.charAt(j))
                    {
                        numberOfCrosses++;

                        for( char ch : w2.toCharArray())
                        {
                        System.out.print(w1);
                        System.out.println(ch);
                        }
                    }
                }
            }

        if(numberOfCrosses == 0)
        {
            System.out.println("Words do not cross ");
        }


    }


    private static boolean crossesAt(String w1, int pos1, String w2, int pos2)
    {
        for( pos1 = 0; pos1 < w1.length(); pos1++)
        {
            for( pos2 = 0; pos2 < w2.length(); pos2++)
            {
                if(w1.charAt(pos1) == w2.charAt(pos2))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }
    return true; }



}

答案 1 :(得分:0)

也许这不是我问过的问题的完整答案,但应该是我需要获得可预测的日期。

可以从注册表中保存用户的首选日期样式,强制使用您想要使用的日期样式,开展业务,然后返回用户的首选日期样式(假设他们不会在运行过程中取消批处理文件。

输出很乱,但它只是证明这个概念有效。

@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.