具有文件属性的条件编程(批处理文件)



我正在尝试构建一个简单的批处理文件,该文件将根据是否已设置存档标志来备份文档,但是我不确定如何检查是否已设置存档标志。 这就是我到目前为止所拥有的,但我不确定 attrib 语法(或者这是否是正确的命令)。 我在这个版本中得到的错误是它目前不需要 %1 变量(文件名)。

@echo off
Rem **** Clears Screen ****
cls
Rem **** Ensure backup directory exists ****
if exist C:backupnul echo Backup directory located
if not exist C:backupnul echo Creating backup directory
if not exist C:backupnul mkdir C:backup
Rem **** Checks if it has already been copied with archive flag ****
if attrib %1 equ +a goto nocopy
if attrib %1 equ -a goto copy
Rem **** Do not copy ****
:nocopy
echo File has already been backed up
pause
Rem **** Copies file ****
:copy
echo Copying %1
copy %1 C:backup%1
echo %1 backed up successfully!
pause

要使用%1作为对文件的引用,您应该将其传递给批处理文件,

backupbatch.cmd miFileToCopy.txt

在批处理文件中,请记住检查是否传递了文件名

if "%~1"=="" exit /b

然后检查存档标志

set "fileAttribs=%~a1"
if "%fileAttribs:~2,1%"=="a" (
    echo flag is set 
) else (
    echo flag is not set
)

%~a1 是 %1 中引用的文件的属性列表。属性列表中的第三个位置是存档标志。测试它(批处理字符串中的第一个位置为 0)以获取 a 值以查看是否设置了标志。

或者find命令可用于测试标志是否存在。

echo %~a1 | find "a" >nul && goto doCopy || goto noCopy

最新更新