gpt4 book ai didi

windows - 如何从 Windows 命令提示符检测 NTFS 压缩?

转载 作者:可可西里 更新时间:2023-11-01 11:27:19 26 4
gpt4 key购买 nike

我想检测脚本的包含文件夹中是否启用了 Windows 文件夹压缩。

最佳答案

编辑:答案在Command Line arguments (Parameters)中.代替 ”。” (= 当前目录) 与所需的文件夹名称,当然:

for /f "delims=" %I in ('dir /B /AD "." 2^>Nul') do @echo %~aI "%I"

%~aI 修饰符返回符合 File Attribute Constants 的字符串如下:

FILE_ATTRIBUTE_DIRECTORY     d-------- 
FILE_ATTRIBUTE_READONLY -r-------
FILE_ATTRIBUTE_ARCHIVE --a------
FILE_ATTRIBUTE_HIDDEN ---h-----
FILE_ATTRIBUTE_SYSTEM ----s----
FILE_ATTRIBUTE_COMPRESSED -----c---
FILE_ATTRIBUTE_OFFLINE ------o--
FILE_ATTRIBUTE_TEMPORARY -------t-
FILE_ATTRIBUTE_REPARSE_POINT --------l

my answer to another question ,有一个脚本输出一个带有标题的 csv 文件,如下所示(修改文件掩码以将输出缩小到合理的大小):

@ECHO OFF
SETLOCAL enableextensions
> files\FoldersAndFilesWithAttributes.csv (
rem csv header
echo "d","r","a","h","s","c","o","t","l","file"
rem csv lines
for /f "delims=" %%I in ('
dir /S /B /A "%~1*.*" 2^>Nul
') do call :display "%%~aI" "%%I"
)

ENDLOCAL
goto :eof

:display
:: subroutine to display file attributes as csv line
:: %1 file attributes ---------
:: %2 file name
set "attr=%~1"
set "out="%attr:~0,1%""
set "out=%out%,"%attr:~1,1%""
set "out=%out%,"%attr:~2,1%""
set "out=%out%,"%attr:~3,1%""
set "out=%out%,"%attr:~4,1%""
set "out=%out%,"%attr:~5,1%""
set "out=%out%,"%attr:~6,1%""
set "out=%out%,"%attr:~7,1%""
set "out=%out%,"%attr:~8,1%""
set "out=%out:-=%"
echo %out%,"%~2"
goto :eof

要将单行输出限制到单个目录,请将 dir 命令的适当文件掩码与 pipe 结合使用至 findstr command .例如获取当前目录的属性:

for /f "delims=" %I in ('dir /B /S /AD ".." 2^>Nul ^|findstr /I /R /C:"^%CD:\=\\%$"') do @echo %~aI "%~I"

输出(:

D:\bat\compressed folder>for /f "delims=" %I in ('dir /B /S /AD ".." 2^>Nul ^|findstr /R /C:"^%CD:\=\\%$"') do @echo %~aI "%~I"
d----c----- "D:\bat\compressed folder"

D:\bat\compressed folder>cd ..

D:\bat>for /f "delims=" %I in ('dir /B /S /AD ".." 2^>Nul ^|findstr /R /C:"^%CD:\=\\%$"') do @echo %~aI "%~I"
d---------- "D:\bat"

D:\bat>

或简单地使用 for %I in (.) do @echo %~aI %~fI 具有相同的输出。

获取当前目录的属性及其内容:

for /f "delims=" %I in ('dir /B /S /A ".." 2^>Nul ^|findstr /I /R /C:"^%CD:\=\\%"') do @echo %~aI "%~I"

输出:

D:\bat\compressed folder>for /f "delims=" %I in ('dir /B /S /A ".." 2^>Nul ^|findstr /I /R /C:"^%CD:\=\\%"') do @echo %~aI "%~I"
d----c----- "D:\bat\compressed folder"
d----c----- "D:\bat\compressed folder\Within compressed folder"
--a--c----- "D:\bat\compressed folder\Within compressed folder\xxx.csv"
--a--c----- "D:\bat\compressed folder\Within compressed folder\xxxx.csv"

D:\bat\compressed folder>

获取当前目录及其子文件夹的属性(无文件):

for /D /R %I in (.) do @echo %~aI %~fI

关于windows - 如何从 Windows 命令提示符检测 NTFS 压缩?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31944428/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com