Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试使用变量julian date和年份的最后一位数字重命名文件_Date_Batch File_Julian Date - Fatal编程技术网

尝试使用变量julian date和年份的最后一位数字重命名文件

尝试使用变量julian date和年份的最后一位数字重命名文件,date,batch-file,julian-date,Date,Batch File,Julian Date,我正在尝试重命名一个文件,如下所示: idYDDD.apl 其中: id是一个字符串id,它是常量,不必担心。 Y是本年度的最后一位数字 DDD是儒略日期,而不是儒略格式的真正儒略日期。(1月1日+天) 我在这里找到了一个批处理文件,它帮助我进行朱利安日期转换。但我正试图从今年的数据中剔除个位数 这就是我试图抓住一位数的方式: set digit=%DATE:~12,1% 我一直在犯错误 无效数字。数字常量为十进制、十六进制或 八进制。” 我有一些文件,DATETOJULIAN.bat 和Se

我正在尝试重命名一个文件,如下所示:

idYDDD.apl

其中: id是一个字符串id,它是常量,不必担心。 Y是本年度的最后一位数字 DDD是儒略日期,而不是儒略格式的真正儒略日期。(1月1日+天)

我在这里找到了一个批处理文件,它帮助我进行朱利安日期转换。但我正试图从今年的数据中剔除个位数

这就是我试图抓住一位数的方式:

set digit=%DATE:~12,1%
我一直在犯错误

无效数字。数字常量为十进制、十六进制或 八进制。”

我有一些文件,DATETOJULIAN.bat 和SendAPL.BAT

Date to julian正在转换日期,SendAPL.Bat正在重命名文件,并在复制后通过FTP发送该文件。以下是朱利安的转变:

REM CONVERT DATE TO JULIAN DAY NUMBER

Echo %Date%

REM GET MONTH, DAY, YEAR VALUES
FOR /F "TOKENS=1-3 DELIMS=/" %%A IN ("%1") DO SET MM=%%A& SET DD=%%B& SET YY=%%C

REM ELIMINATE LEFT ZEROS
SET /A DD=10%DD% %% 100, MM=10%MM% %% 100

REM CALCULATE JULIAN DAY NUMBER
IF %MM% LSS 3 SET /A MM+=12, YY-=1
SET /A A=YY/100, B=A/4, C=2-A+B, E=36525*(YY+4716)/100, F=306*(MM+1)/10,         JDN=C+DD+E+F-1524
以下是发送APL:

@echo off

set digit=%DATE:~12,1%



call c:\wic\DATETOJULIAN.BAT %DATE%

call c:\wic\ip.bat

copy c:\wic\download\*04.apl c:\wic\archive\%DAY%_04.apl
copy c:\wic\download\*04.apl c:\wic\download\KY%digit%%JDN%.APL

Pause 


ftp -s:C:\wic\sendapl.ftp %IP%

del c:\wic\download\*04.APL

看起来您已经选择了获取真实朱利安日编号的批处理文件。正如stack exchange上朱利安标签的描述所述,朱利安日数是从公元前4714年11月24日中午开始的整天数(整数),在公历的前公历,即世界时间中。如果您以您期望的格式为文件DATETOJULIAN.BAT指定了日期,则该文件会执行此操作;例如,现在是2015年6月25日下午7点。您输入6/25/2015作为参数,它给出了正确的JDN=2457199。但看起来你想要的是一年中的第176天。那不是朱利安式的约会,那是有序的约会

解决方案是调用DATETOJULIAN.BAT两次。首先,找到所需年份前一年12月31日的JDN,并将其命名为JDNDEC31。然后找到您想要的日期的JDN。然后查找顺序日期JDN-jdnec31


如果有人阅读或维护您的代码,您应该记录您没有计算真正的儒略日数,因为您没有考虑儒略日数始终使用格林威治时间,儒略日从中午开始,而不是午夜。如果你想要一个类似的使用当地时间并从午夜开始的日数,可以使用Lilian日期,该日期在维基百科上有一篇文章。如果您的文件时间是在格林威治时间报告的,并且您想要一个从午夜开始的日数,请使用修改后的朱利安日期,这在维基百科关于朱利安日的文章中有描述。

您能编辑并发布您脚本的洞代码吗,我认为更好地了解您的问题?谢谢您的回复!我偶然发现了朱利安的真实约会。老实说,我在做这件事之前没有意识到有什么不同。实际上,我最终编写了一个C#脚本来运行文件的重命名和移动。我试图学习如何使用一个.bat文件,但时间不够了。