我有一个for循环,我正在尝试获取日期/时间创建信息。
我的代码的简单版本如下所示:
set home=C:\Temp\dir1
for /f "tokens=*" %%a in ('dir /b %home%\2nd_dir') do echo file info=%%~na %%~ta
如果我没有在dir
函数中包含目录的路径,那么事实证明这是有效的。
即。如果我从当前目录运行它,我会得到名称和时间戳。
但是,如果我放入一个目录进行搜索,我只会得到这个名字。我尝试了每一个修饰符,~t
和~z
是唯一无效的修饰符。
我也可以使用forfiles
函数执行此操作,但问题是目录实际上是网络路径而不是C:
驱动器,所以我必须robocopy
从我的网络路径到本地驱动器的文件使用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
任何人都知道这里发生了什么?
答案 0 :(得分:1)
dir/b
仅获取文件名,因此添加修饰符会在当前目录中查找文件名。
尝试
pushd yourrequireddirectory
for ...
popd
应该返回适当的结果(毫无疑问除了 ~d和~p)