Windows 具有文件属性的条件编程(批处理文件)
我正在尝试构建一个简单的批处理文件,该文件将根据是否设置了存档标志来备份文档,但是我不确定如何检查是否设置了存档标志。到目前为止,这就是我所知道的,但我不确定attrib语法(或者这是否是正确的命令)。此版本的错误是,此时不需要%1变量(文件名)Windows 具有文件属性的条件编程(批处理文件),windows,batch-file,command-line,command-line-arguments,Windows,Batch File,Command Line,Command Line Arguments,我正在尝试构建一个简单的批处理文件,该文件将根据是否设置了存档标志来备份文档,但是我不确定如何检查是否设置了存档标志。到目前为止,这就是我所知道的,但我不确定attrib语法(或者这是否是正确的命令)。此版本的错误是,此时不需要%1变量(文件名) @echo off Rem **** Clears Screen **** cls Rem **** Ensure backup directory exists **** if exist C:\backup\nul echo Backup di
@echo off
Rem **** Clears Screen ****
cls
Rem **** Ensure backup directory exists ****
if exist C:\backup\nul echo Backup directory located
if not exist C:\backup\nul echo Creating backup directory
if not exist C:\backup\nul 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中引用的文件的属性列表。属性列表中的第三个位置是归档标志。测试a
值(批处理字符串中的第一个位置为0),以查看是否设置了该标志
或find
命令可用于测试标志是否存在
echo %~a1 | find "a" >nul && goto doCopy || goto noCopy
xcopy
可以处理归档属性。请参见参数/a
或-更好的是-/m