尝试使用变量julian date和年份的最后一位数字重命名文件
我正在尝试重命名一个文件,如下所示: idYDDD.apl 其中: id是一个字符串id,它是常量,不必担心。 Y是本年度的最后一位数字 DDD是儒略日期,而不是儒略格式的真正儒略日期。(1月1日+天) 我在这里找到了一个批处理文件,它帮助我进行朱利安日期转换。但我正试图从今年的数据中剔除个位数 这就是我试图抓住一位数的方式:尝试使用变量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
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文件,但时间不够了。