Batch file For循环修饰符不返回任何值(~t和~z)
我有一个for循环,我正在尝试获取创建日期/时间的信息 我的代码的简单版本如下所示:Batch file For循环修饰符不返回任何值(~t和~z),batch-file,Batch File,我有一个for循环,我正在尝试获取创建日期/时间的信息 我的代码的简单版本如下所示: set home=C:\Temp\dir1 for /f "tokens=*" %%a in ('dir /b %home%\2nd_dir') do echo file info=%%~na %%~ta 如果我在dir函数中不包含目录的路径,那么结果就是这样 i、 如果我从当前目录运行它,我会得到名称和时间戳 但是,如果我输入一个要搜索的目录,我只会得到名称。我已经尝试了每一个修饰符,只有~t和~z不起作
set home=C:\Temp\dir1
for /f "tokens=*" %%a in ('dir /b %home%\2nd_dir') do echo file info=%%~na %%~ta
如果我在dir
函数中不包含目录的路径,那么结果就是这样
i、 如果我从当前目录运行它,我会得到名称和时间戳
但是,如果我输入一个要搜索的目录,我只会得到名称。我已经尝试了每一个修饰符,只有~t
和~z
不起作用
我也可以使用forfiles
功能来执行此操作,但问题是目录实际上是一个网络路径,而不在C:
驱动器上,因此我必须robocy
将文件从我的网络路径发送到本地驱动器才能使用forfiles
(使用net use
或pushd
映射驱动器将使事情变得非常复杂)
我可以从命令提示符更容易地测试这一点
行得通
for /f %c in ('dir /b') do set ftime=%~tc
不起作用
for /f %c in ('dir /b C:\temp\dir1') do set ftime=%~tc
行得通
for /f %c in ('dir /b C:\temp\dir1') do set fname=%~nc
有人知道这里发生了什么吗?
dir/b
只获取文件名,因此添加修饰符会查找文件名的当前目录
试一试
它应该会返回适当的结果(毫无疑问,~d和~p除外)正常工作,这个for循环实际上嵌套在另一个for循环中。因此它实际上看起来更像这样:for/f in(command)do(command2)&for/f in(command2)do(command3)在没有大量细节的情况下很难表达,但我认为你不能在嵌套的for循环中进行pushd/popd。我已经能够获得日期和时间戳,因此我可以让我的程序工作,但我需要将大量目录从网络路径复制到本地目录,以运行forfiles命令并返回日期和时间。但是你是对的,/b不会有帮助。没有理由
pushd/popd
在循环中不起作用。请在你的问题中包括这个额外的细节,如果可能的话,提供一些示例。谢谢Magoo。看起来你在嵌套for循环中使用pushd/popd是对的。上次我尝试它时,它失败了,因为我的行为出现语法错误f(即键入“&pushd”而不是“&pushd”)。无论如何,这不起作用,因为我不必使用“dir C;\这里有很多目录内容”,我可以直接推送到该目录,然后使用dir命令。感谢您的帮助!
pushd yourrequireddirectory
for ...
popd