Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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
Batch file For循环修饰符不返回任何值(~t和~z)_Batch File - Fatal编程技术网

Batch file For循环修饰符不返回任何值(~t和~z)

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不起作

我有一个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
不起作用

我也可以使用
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