XP,CMD,将文件移动到包含文件 DATE 的文件夹

XP,CMD,将文件移动到包含文件 DATE 的文件夹

我想使用文件日期来移动文件。假设我有 2011 年 5 月 10 日创建的文件 test.txt,我想将该文件移动到 C:\2011\05\10\test.txt。

你可以做类似的事情 在此处输入图片描述

我想我的问题很简单:如何将文件日期放到命令行上?应该用什么来替换“DATE /t”来获取 test.txt 的“创建日期”?

编辑进一步研究:我可以通过 dir & find 获取日期时间...但它在批处理文件中不起作用...在此处输入图片描述

答案1

我将其作为批处理文件执行,因此使用了两个 % 符号。如果您从命令行执行此操作,则只需将其改为单个即可。

for %%f in (*.txt) do (
for /f "tokens=1-3 delims=/ " %%i in ("%%~tf") do (
if not exist "C:\%%k\%%i\%%j" mkdir "C:\%%k\%%i\%%j"
move "%%f" "C:\%%k\%%i\%%j" >NUL
)
)

因此,对于您关于获取文件日期的问题,简短的回答是%~tI在 for 语句中使用,其中 I 是 for 语句中使用的变量。请参阅“ help for”以了解有关其他可用内容的更多信息。

答案2

您需要做的是执行 FOR 命令并处理 DIR 命令的输出。您可能需要嵌套两个 FOR 命令才能获取日期的各个数字。

建议使用的 DIR 命令:

dir c:\ /TC /A-D

建议的 FOR 命令:

FOR /F " TOKENS=1,5 delims= " %A IN ('dir c:\ /TC /A-D') DO @ECHO A-%A B-%B

这应该可以满足您大部分需要,以便使其正常工作。问题是 CMD 不擅长这种工作。虽然您可以这样做,但我建议您使用更高级的语言,例如 powershell。它对 Windows 是免费的,Quest Software 制作了一款很棒的 GUI 编辑器,名为电源图形用户界面

这是我在 Powershell 中编写的用于执行此操作的代码。对我来说,这更容易理解。

#Get files in C:\temp and filter out directories
$tarfol = "C:\temp" #Target Folder
$var = Get-ChildItem $tarfol | Where-Object {$_.mode -inotmatch "d"} 

#Process Files
foreach($item in $var)
    {
    #Build New Folder Path
    $folder = "$tarfol\$item.CreationTime.Year\$item.CreationTime.Month\$item.CreationTime.Day"

    #Test for for folder
    if(!(Test-Path $folder)) {
        #Create folder
        New-Item -Path C:\temp\$y\$m\$d -ItemType directory
        }
    #Move item
    Move-Item -Path $item.FullName -Destination "$folder"
    }

希望这可以帮助。

答案3

在此处输入图片描述
我不得不用 ^ 来逃避 |。

相关内容