草庐IT

windows - 将具有属性的目录批处理到 csv

coder 2024-06-14 原文

我花了很多时间搜索这个(和其他)网站试图解决这个问题,但我最终承认我被困住了。我是初学者,所以如果我的术语/解释令人困惑,我提前道歉。

操作系统:Windows 7

我正在处理单个批处理文件,该文件将创建一个 .csv 文件,其中包含批处理文件当前文件夹位置的所有文件夹和文件(包括子文件夹)的属性和路径。我正在针对属性的所有可能场景进行迭代。下面是我的代码的解释:

**在 csv 文件中创建一个标题:

@echo on
echo Folder vs. File,Hidden,System Folder,Read Only,Path > FoldersAndFilesWithAttributes.csv

**将具有特定属性的文件和文件夹名称复制到临时 .txt 文件

dir %~dp0 /s /n /a:dhsr /b >> FoldersAndFiles.txt

**将属性附加到文件夹/文件路径并放入 csv 文件

for /f "tokens=*" %%i in (FoldersAndFiles.txt) do echo Folder,Hidden,System,ReadOnly,%%i >> FoldersAndFilesWithAttributes.csv

**删除临时.txt文件

del FoldersAndFiles.txt

问题 我不确定问题出在哪里,因为 - 出于某种原因 - 它适用于某些文件夹,但不适用于其他文件夹。有时我只在存在具有已知属性的文件时得到标题,有时完整路径不存在,有时我什么也得不到。我想也许我覆盖临时文件的速度太快了,所以我为每个场景创建了唯一的 .txt 文件,但这仍然不起作用。

**下面是我的完整代码:

@echo off

echo Folder vs. File,Hidden,System Folder,Read Only,Path > FoldersAndFilesWithAttributes.csv

dir %~dp0 /s /n /a:dhsr /b >> FoldersAndFiles.txt
for /f "tokens=*" %%i in (FoldersAndFiles.txt) do echo Folder,Hidden,System,ReadOnly,%%i >> FoldersAndFilesWithAttributes.csv

dir %~dp0 /s /n /a:dhs-r /b >> FoldersAndFiles.txt
for /f "tokens=*" %%i in (FoldersAndFiles.txt) do echo Folder,Hidden,System,Not ReadOnly,%%i >> FoldersAndFilesWithAttributes.csv

dir %~dp0 /s /n /a:dh-sr /b >> FoldersAndFiles.txt
for /f "tokens=*" %%i in (FoldersAndFiles.txt) do echo Folder,Hidden,Not System,ReadOnly,%%i >> FoldersAndFilesWithAttributes.csv

dir %~dp0 /s /n /a:dh-s-r /b >> FoldersAndFiles.txt
for /f "tokens=*" %%i in (FoldersAndFiles.txt) do echo Folder,Hidden,Not System,Not ReadOnly,%%i >> FoldersAndFilesWithAttributes.csv

dir %~dp0 /s /n /a:d-hsr /b >> FoldersAndFiles.txt
for /f "tokens=*" %%i in (FoldersAndFiles.txt) do echo Folder,Not Hidden,System,ReadOnly,%%i >> FoldersAndFilesWithAttributes.csv

dir %~dp0 /s /n /a:d-hs-r /b >> FoldersAndFiles.txt
for /f "tokens=*" %%i in (FoldersAndFiles.txt) do echo Folder,Not Hidden,System,Not ReadOnly,%%i >> FoldersAndFilesWithAttributes.csv

dir %~dp0 /s /n /a:d-h-sr /b >> FoldersAndFiles.txt
for /f "tokens=*" %%i in (FoldersAndFiles.txt) do echo Folder,Not Hidden,Not System,ReadOnly,%%i >> FoldersAndFilesWithAttributes.csv

dir %~dp0 /s /n /a:d-h-s-r /b >> FoldersAndFiles.txt
for /f "tokens=*" %%i in (FoldersAndFiles.txt) do echo Folder,Not Hidden,Not System,Not ReadOnly,%%i >> FoldersAndFilesWithAttributes.csv

dir %~dp0 /s /n /a:-dhsr /b >> FoldersAndFiles.txt
for /f "tokens=*" %%i in (FoldersAndFiles.txt) do echo File,Hidden,System,ReadOnly,%%i >> FoldersAndFilesWithAttributes.csv

dir %~dp0 /s /n /a:-dhs-r /b >> FoldersAndFiles.txt
for /f "tokens=*" %%i in (FoldersAndFiles.txt) do echo File,Hidden,System,Not ReadOnly,%%i >> FoldersAndFilesWithAttributes.csv

dir %~dp0 /s /n /a:-dh-sr /b >> FoldersAndFiles.txt
for /f "tokens=*" %%i in (FoldersAndFiles.txt) do echo File,Hidden,Not System,ReadOnly,%%i >> FoldersAndFilesWithAttributes.csv

dir %~dp0 /s /n /a:-dh-s-r /b >> FoldersAndFiles.txt
for /f "tokens=*" %%i in (FoldersAndFiles.txt) do echo File,Hidden,Not System,Not ReadOnly,%%i >> FoldersAndFilesWithAttributes.csv

dir %~dp0 /s /n /a:-d-hsr /b >> FoldersAndFiles.txt
for /f "tokens=*" %%i in (FoldersAndFiles.txt) do echo File,Not Hidden,System,ReadOnly,%%i >> FoldersAndFilesWithAttributes.csv

dir %~dp0 /s /n /a:-d-hs-r /b >> FoldersAndFiles.txt
for /f "tokens=*" %%i in (FoldersAndFiles.txt) do echo File,Not Hidden,System,Not ReadOnly,%%i >> FoldersAndFilesWithAttributes.csv

dir %~dp0 /s /n /a:-d-h-sr /b >> FoldersAndFiles.txt
for /f "tokens=*" %%i in (FoldersAndFiles.txt) do echo File,Not Hidden,Not System,ReadOnly,%%i >> FoldersAndFilesWithAttributes.csv

dir %~dp0 /s /n /a:-d-h-s-r /b >> FoldersAndFiles.txt
for /f "tokens=*" %%i in (FoldersAndFiles.txt) do echo File,Not Hidden,Not System,Not ReadOnly,%%i >> FoldersAndFilesWithAttributes.csv


del FoldersAndFiles.txt

感谢您的帮助, 肖恩

最佳答案

@echo off
setlocal EnableDelayedExpansion

(
echo Folder vs. File,Hidden,System,Read Only,Path
for /F "delims=" %%a in ('dir /S /B /A') do (
   set "attribs=%%~Aa"
   if "!attribs:D=!" neq "!attribs!" (set "type=Folder") else set "type=File"
   set "hidden=Not Hidden"
   if "!attribs:H=!" neq "!attribs!" set "hidden=Hidden"
   set "system=Not System"
   if "!attribs:S=!" neq "!attribs!" set "system=System"
   set "readOnly=Not Read Only"
   if "!attribs:R=!" neq "!attribs!" set "readOnly=Read Only"
   echo !type!,!hidden!,!system!,!readOnly!,%%~Fa
)
) > FoldersAndFilesWithAttributes.csv

关于windows - 将具有属性的目录批处理到 csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31079628/

有关windows - 将具有属性的目录批处理到 csv的更多相关文章

  1. ruby - 在 Ruby 程序执行时阻止 Windows 7 PC 进入休眠状态 - 2

    我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0

  2. ruby - 具有身份验证的私有(private) Ruby Gem 服务器 - 2

    我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..

  3. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  4. ruby - 用逗号、双引号和编码解析 csv - 2

    我正在使用ruby​​1.9解析以下带有MacRoman字符的csv文件#encoding:ISO-8859-1#csv_parse.csvName,main-dialogue"Marceu","Giveittohimóhe,hiswife."我做了以下解析。require'csv'input_string=File.read("../csv_parse.rb").force_encoding("ISO-8859-1").encode("UTF-8")#=>"Name,main-dialogue\r\n\"Marceu\",\"Giveittohim\x97he,hiswife.\"\

  5. ruby-on-rails - 如果为空或不验证数值,则使属性默认为 0 - 2

    我希望我的UserPrice模型的属性在它们为空或不验证数值时默认为0。这些属性是tax_rate、shipping_cost和price。classCreateUserPrices8,:scale=>2t.decimal:tax_rate,:precision=>8,:scale=>2t.decimal:shipping_cost,:precision=>8,:scale=>2endendend起初,我将所有3列的:default=>0放在表格中,但我不想要这样,因为它已经填充了字段,我想使用占位符。这是我的UserPrice模型:classUserPrice回答before_val

  6. ruby - 我可以使用 Ruby 从 CSV 中删除列吗? - 2

    查看Ruby的CSV库的文档,我非常确定这是可能且简单的。我只需要使用Ruby删除CSV文件的前三列,但我没有成功运行它。 最佳答案 csv_table=CSV.read(file_path_in,:headers=>true)csv_table.delete("header_name")csv_table.to_csv#=>ThenewCSVinstringformat检查CSV::Table文档:http://ruby-doc.org/stdlib-1.9.2/libdoc/csv/rdoc/CSV/Table.html

  7. ruby-on-rails - 在混合/模块中覆盖模型的属性访问器 - 2

    我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah

  8. ruby-on-rails - active_admin 目录中的常量警告重新声明 - 2

    我正在使用active_admin,我在Rails3应用程序的应用程序中有一个目录管理,其中包含模型和页面的声明。时不时地我也有一个类,当那个类有一个常量时,就像这样:classFooBAR="bar"end然后,我在每个必须在我的Rails应用程序中重新加载一些代码的请求中收到此警告:/Users/pupeno/helloworld/app/admin/billing.rb:12:warning:alreadyinitializedconstantBAR知道发生了什么以及如何避免这些警告吗? 最佳答案 在纯Ruby中:classA

  9. ruby - 多个属性的 update_column 方法 - 2

    我有一个具有一些属性的模型:attr1、attr2和attr3。我需要在不执行回调和验证的情况下更新此属性。我找到了update_column方法,但我想同时更新三个属性。我需要这样的东西:update_columns({attr1:val1,attr2:val2,attr3:val3})代替update_column(attr1,val1)update_column(attr2,val2)update_column(attr3,val3) 最佳答案 您可以使用update_columns(attr1:val1,attr2:val2

  10. ruby - Nokogiri 剥离所有属性 - 2

    我有这个html标记:我想得到这个:我如何使用Nokogiri做到这一点? 最佳答案 require'nokogiri'doc=Nokogiri::HTML('')您可以通过xpath删除所有属性:doc.xpath('//@*').remove或者,如果您需要做一些更复杂的事情,有时使用以下方法遍历所有元素会更容易:doc.traversedo|node|node.keys.eachdo|attribute|node.deleteattributeendend 关于ruby-Nokog

随机推荐