批处理命令错误

时间:2017-06-19 02:30:24

标签: batch-file cmd

@echo off
setlocal
set Folder=C:\Test
set FileMask=*.txt
set OldestFile=
for /f "delims=" %%a in ('dir /b /o:d %Folder%\%FileMask%" 2^>NUL') do (
    set OldestFile=%%a
    goto Break
)
:Break
if "%OldestFile%"=="" (
    echo No files found in '%Folder%' matching '%FileMask%'!
) else (
    del "%Folder%\%OldestFile%"
)

嗨,我正在尝试使用批处理文件删除Test目录中最旧的文件,但是在运行它之后,无论是否具有管理员权限,我都会收到错误 'dir / b / o:d “C \ Test”2> NUL'未被识别为内部或外部命令,可操作程序或批处理文件。 我试图在Windows Server 2012 R2 x64位上运行它。请帮忙。谢谢。

1 个答案:

答案 0 :(得分:0)

PowerShell似乎更简洁。如果您对删除正确的文件感到满意,请删除-WhatIf开关。

C:\src\t>type xxx.bat
@ECHO OFF
SET "Folder=C:\src\t"
SET "FileMask=*.txt"

powershell -noprofile -command "dir %Folder% -filt %FileMask% -file |"^
    "sort -p LastWriteTime -d |"^
    "select -l 1 |"^
    "del -WhatIf"

C:\src\t>xxx.bat
What if: Performing the operation "Remove File" on target "C:\src\t\th.txt".

如果您正在运行PowerShell,语法会更清晰。

PS C:\src\t> type .\xxx.ps1
$Folder = 'C:\src\t'
$FileMask = '*.txt'

Get-ChildItem -Path $Folder -Filter $FileMask -File |
    Sort-Object -Property LastWriteTime -Descending |
    Select-Object -Last 1 |
    Remove-Item -WhatIf
PS C:\src\t> .\xxx.ps1
What if: Performing the operation "Remove File" on target "C:\src\t\th.txt".