我创建了一个包含路径和文件名的文件。 我通过命令行传递文件名,一次一个我的批处理文件。 我使用%~1,%~t1,%~z1来获取时间和大小值。 我想将每个记录写入文件进行排序。时间和文件大小将不同,我想保存具有最佳信息的版本。
我在批处理文件中遇到问题以获取大小和日期。我试图测试我是否在读取文件信息时出错。当我查看参数时,它总是包含传递给批处理文件的路径文件名。当打印%~t1%_ z1值时,如果每件事都正常,我会看到正确的值,否则打印只显示time =和size =。因此,我尝试使用文件大小或时间值来确定是否存在错误。
我尝试了许多不同的方法来使用IF cmd来打印出是否发生了错误。我暂时没有使用批处理文件,我无法弄清楚导致问题的原因。
这是批处理文件的片段(我尝试了一些事情):
@echo off
rem if [%~z1] == []
rem if [NOT] %~t1
rem if ["%~t1]==[]
rem if exist [%~1]
str1 = %~t1
if not definded str1 (echo str1 error)
if not definded str1
( print "AN ERROR OCURRED FOR THIS FILE/n" )
else
(
echo fpath =%~1
echo time = %~t1
echo size = %~z1
)
我明白了:
这些可能是我的错误,但搜索许多信息网站并没有在我脑子里敲响我的错误。
任何帮助将不胜感激。提前谢谢。
答案 0 :(得分:0)
您要查找的短语是if defined
。 Definded不是一个词。
您必须使用set
命令在变量中存储值,因此您的第一行必须为set str1=%~t1
if
语句需要(
与if
在同一行。同样,)
,else
和(
必须全部位于同一行。
Print
在技术上是一个有效的批处理命令,但它会将文档发送到打印机;批处理使用echo
向屏幕显示文本,换行符自动附加到回显行。
@echo off
set str1=%~t1
if not defined str1 (
echo AN ERROR OCCURRED FOR THIS FILE
) else (
echo fpath=%~1
echo time=%~t1
echo size=%~z1
)
答案 1 :(得分:0)
我终于想出了如何让它发挥作用。我发现一个帖子表明括号需要采用那种确切的格式,否则它根本不起作用。即使在语句的IF部分周围放置括号也会阻止脚本按预期工作。
IF语句本身更容易处理。例如,要检查空参数,可以使用以下任一方法:
如果"%~t1" =="" (
echo"这个文件的错误/ n"
)否则(
echo fpath =%~1
回声时间=%~t1
回声大小=%~z1
)