Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Umějí dávkové soubory pracovat s atributy "šifrovaný" a "komprimovaný? Nebo je třeba užít skripty?

Dobré odpoledne, umí příkazový řádek ve Windows 2000/XP pracovat s atributy "šifrovaný" a "komprimovaný? Je možné napsat dávku, která by například vypsala všechny soubory s atributem "šifrovaný" ve složce C:\Test? Nebo se pro tento úkol musí použít nějaký skript? Může prosím někdo uvést příklad takové dávky/skriptu? Předem děkuji za váš čas.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
OK tak sem překopíruju jeden z tech skriptů ' From the book "Windows XP Cookbook" ' ISBN: 059600725…
Mitch 29.01.2008 16:03
Mitch
Takže třeba tohle: strFilePath = "d:" WScript.Echo " Encrypted: " & objFile.Encrypted WScript.Echo…
Laik 29.01.2008 20:04
Laik
Ne. Ten skript je pro vypsání informací o jednom souboru. Pokud chceš projít všechny soubory v defi…
host 29.01.2008 20:13
host
A jak se taková smyčka vytváří? Jestli ji umíš vytvořit, mohl bys mně ten skript napsat? Můžeme zůst…
Laik 29.01.2008 20:36
Laik
Ukázku smyčky už jsem ti psal v předchozím příkladu for each...
host 29.01.2008 20:56
host
Takže třeba takhle? strFilePath = "d:" for each objFile in files WScript.Echo " Encrypted: " & objF…
Laik 29.01.2008 21:28
Laik
Než se pustíš do skriptování, měl bys projet aspoň základy:-) Skloubil jsem hostův kód s tím z odkaz…
Mitch 29.01.2008 23:07
Mitch
Perfektní, Mitchi. Funguje na Win 2000 i na XP. Můžu jen ještě poprosit o radu, jak to udělat, aby t… nový
Laik 30.01.2008 21:13
Laik
Podívám se na to o víkendu jestli to nějak nespěchá. nový
Mitch 01.02.2008 01:12
Mitch
v zásadě je potřeba napsat to rekurzivně (tj. udělat si funkci) a tou projíždět všechny adresáře, a… nový
touchwood 01.02.2008 06:36
touchwood
Set objWMI = GetObject("winmgmts:\\.\root\cimv2") Set fso = CreateObject("Scripting.FileSystemObject… nový
Mitch 02.02.2008 15:06
Mitch
Mitchi, smekám před tvými schopnostmi a jsem tvým (alespoň virtuálním) dlužníkem. Skript funguje na… nový
Laik 03.02.2008 22:12
Laik
proč si výstup nepřesměruješ do souboru? příklad: cscript c:\tester.vbs >c:\vysledek.txt nový
touchwood 04.02.2008 07:05
touchwood
Touchwoode, děkuju. Tím je můj problém vyřešen dokonale a se vším všudy. Ještě jednou děkuju všem, k… poslední
Laik 04.02.2008 20:23
Laik

OK tak sem překopíruju jeden z tech skriptů

' From the book "Windows XP Cookbook"
' ISBN: 0596007256

' ------ SCRIPT CONFIGURATION ------
strFilePath = "d:\\myfile.txt"
strComputer = "."
' ------ END CONFIGURATION ---------
set objWMI = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
set objFile = objWMI.Get("CIM_Datafile=""" & strFilePath & """")
WScript.Echo objFile.Name

WScript.Echo " 8.3 Name: " & objFile.EightDotThreeFileName
WScript.Echo " Drive: " & objFile.Drive
WScript.Echo " FileName: " & objFile.FileName
WScript.Echo " Extension: " & objFile.Extension
WScript.Echo " FileType: " & objFile.FileType
WScript.Echo " Path: " & objFile.Path
WScript.Echo " InUse Counter: " & objFile.InUseCount

WScript.Echo " Creation Date: " & objFile.CreationDate
WScript.Echo " Last Accessed: " & objFile.LastAccessed
WScript.Echo " Last Modified: " & objFile.LastModified

WScript.Echo " Archive: " & objFile.Archive
WScript.Echo " Compressed: " & objFile.Compressed
WScript.Echo " Encrypted: " & objFile.Encrypted
WScript.Echo " System: " & objFile.System
WScript.Echo " Writeable: " & objFile.Writeable
WScript.Echo " Hidden: " & objFile.Hidden

Myslím že je to docela výmluvný. strFilePath obsahuje cestu k souboru. Atributy se pak dají
zjištovat přes objekt objFile. Pokud je soubor šifrovaný, objFile.Encrypted je true, jinak false.

A jak se taková smyčka vytváří? Jestli ji umíš vytvořit, mohl bys mně ten skript napsat? Můžeme zůstat u toho příkladu výše s cílem najít a zobrazit všechny soubory na disku D: s atributem "šifrovaný" nebo "komprimovaný".

Než se pustíš do skriptování, měl bys projet aspoň základy:-) Skloubil jsem hostův kód s tím z odkazu a vyšlo

set objWMI = GetObject("winmgmts:\\.\root\cimv2")

Set fsoFolder = CreateObject("Scripting.FileSystemObject")
Set folder = fsoFolder.GetFolder("C:\")
Set files = folder.Files

for each objFile in files
strFilePath = "C:\\" & objFile.Name
set wmiobjFile = objWMI.Get("CIM_Datafile=""" & strFilePath & """")
msgbox objFile.Name & ", Compressed: " & wmiobjFile.Compressed & ", Encrypted: " & wmiobjFile.Encrypted
next

Basic jsem opustil už dávno tak je to taková slátanina... ale funguje:-)

Perfektní, Mitchi. Funguje na Win 2000 i na XP. Můžu jen ještě poprosit o radu, jak to udělat, aby to projelo i podsložky a ignorovalo soubory, které nejsou ani šifrované ani komprimované? Tak aby výsledek byl seznam jenom souborů šifrovaných či komprimovaných ve všech složkách i podsložkách na disku. Předem děkuju za tu spoustu času, kterou jsi tomu už věnoval.

v zásadě je potřeba napsat to rekurzivně (tj. udělat si funkci) a tou projíždět všechny adresáře, a znova vyhledat adresáře a ty předat jako parametry dané funkci (+ samozřejmě to tvé vyhledávání)

Napsal bych to, je to otázka max. 30 minut, ale v souč. době na to prostě nemám čas.

Set objWMI = GetObject("winmgmts:\\.\root\cimv2")
Set fso = CreateObject("Scripting.FileSystemObject")

AnalyzeDir(fso.GetFolder(WScript.Arguments(0)))

Sub AnalyzeDir(dir)

  for each file in dir.Files

	Set wmiobjFile = objWMI.Get("CIM_Datafile=""" & Replace(file.Path,"\","\\") & """")
	If wmiobjFile.Compressed or wmiobjFile.Encrypted Then
	  str = file.Path & " "
	  If wmiobjFile.Compressed Then str = str & "C"
	  If wmiobjFile.Encrypted Then str = str & "E"
	  Wscript.Echo(str)
	End If
	
  next
  
  for each nextdir in dir.SubFolders
    AnalyzeDir(nextdir)
  Next

 
 End Sub

WScript.Echo()
WScript.Echo("Prohledávání bylo dokončeno")
WScript.StdIn.ReadLine

Ten Basic to je strašně ukecanej jazyk:-) Je to dělaný pro konzoli a přijímá jeden parametr a to je složka ve které to má začít. Když to uložíš jako skript.vbs a budeš chtít projet celý C tak to pusť..

cscript C:\script.vbs C:\

Skript zobrazí jen soubory které jsou buď komprimované nebo šifrované a za jejich názvem pak C pro komprimovaný soubor a E pro šifrovaný.

//EDIT: Dalo by se to možná řešit i SQL dotazem ale nějak se mi to nepodařilo zprovoznit.

Mitchi, smekám před tvými schopnostmi a jsem tvým (alespoň virtuálním) dlužníkem. Skript funguje na obou platformách bezchybně přesně tak, jak jsem potřeboval. Snad jen ještě jeden minidetail. Při testování skript narazil na složku dllcache, kde je velké množství komprimovaných souborů. Seznam na příkazovém řádku byl tak dlouhý, že na obrazovce zůstal jen jeho konec. Dá se v příkazovém řádku nějak "doskákat" dopředu na začátek toho seznamu?

Zpět do poradny Odpovědět na původní otázku Nahoru