Jump to content

Autoit De Filesetattrib Istediğim Gibi Çalısmıyor?


SimpsoN_Bart

Recommended Posts

Arkadaslar güzel bir fikir geldi aklıma varmı bilmiyorum ama ben yapmak istiyorum. Sorunumu kısca şöle acıklayayım.

attrib +h parametresini sağ tıka koyarak dosyayı gizliyorum.Ama 2 saniyeliğinde olsa cmd ekranı geliyor. Bende autoit de denedim olmadı.Arkadaslar yaptığım örnek içinde indirip bakarsanız daha iyi yardımcı olacağınıza eminim.. TEşekkürler...

http://rapidshare.com/files/405950610/a__ae_klama.rar

Link to comment
Share on other sites

Ah bu rapid ah..Yedi beni dosyalarının kodlarını göremiyorum ama senin için küçük bir program hazırladım..

If $Cmdline[0] = 1 Then
	$returnattrib=FileSetAttrib($Cmdline[1], "+H")
	If $returnattrib Then
		$dosyaisim=StringSplit($Cmdline[1], "\")
		Msgbox(64, "Başarılı!", $dosyaisim[$dosyaisim[0]]&" dosyası başarıyla gizlendi!")
	Else
		MsgBox(16, "Hata!", "İşlem sırasında bir hata oluştu!")
	EndIf
EndIf

Bu tek bir tane dosya için geçerli.Daha fazlasını sen yazabilirsin..

Not:Kafadan yazdığım için syntax problemleri olabilir..

Link to comment
Share on other sites

@ SimpsoN_Bart

Bu kadarcık ufak bir komutu niye upload ettin :)

Direkt burda verseydin.

Neyse isteğin biraz basit kaçmış. Biraz geliştirelim. Misal şöyle yapabiliriz.

Dosya gizliyse gizlilik özlliğini iptal etsin. Gizli deyilse gizlesin.

Yada diğer seçeneklerde konabilir. Kafanda şekillendirmelisin.

Dur ben sana basit bir örnek verim.

#NoTrayIcon
#RequireAdmin

If $CMDLINE[0] = 0 Then
	MsgBox(16,"Hata","Parametre yok!" & @crlf & "Işte istediğni yaz")
	Exit
EndIf
If Not FileExists($CMDLINERAW) Then
	MsgBox(16,"Parametre hatalı.",$CMDLINERAW & " dosyası yok!")
	Exit
EndIf

Global $Attrib = "+H"
If StringInStr(FileGetAttrib($CMDLINERAW),"H") Then $Attrib = "-H"
FileSetAttrib($CMDLINERAW, $Attrib,1)

@talha_252

Benden önce davrandın :)

Link to comment
Share on other sites

Öncelikle ilgilendiğiniz için çok tesekkür ederim:D @ talha_252 arkadasım senin verdiğin kodla oldu...Ama dediğin gibi tek dosya için

gecerli. benim bu aralar kafam cok yoğun staj yerimde bi program üstünde çalısıyorum.Nasıl birden fazla yapacağımı bilmiyorum ayrıca nete cok giremiyorum:S Onun için bana hem birden çok klasör secip gizleme

hemde bunu tüm uzantılar için gizleme yazıp paylasırsan cok mutlu olurm.. @ blue_life ın yazdığı kodla birleştirebilirseniz harika olr ama mesajbox da bilgi vermesin coklu secimde sıkıntılı olur... Şimdiden c0k tşk ederim

Link to comment
Share on other sites

If $Cmdline[0] <> 0 Then
	$hata=False
	For $i=1 To $Cmdline[0]
		If StringInStr(FileGetAttrib($Cmdline[$i]), "D") Then
			$dosyalarilistele=_FileFolderList($Cmdline[$i])
			If Not @error Then
				For $t = 1 To $dosyalarilistele[0][0]
					$returnattrib=FileSetAttrib($dosyalarilistele[0][$t], "+H")
					If Not $returnattrib Then $hata=True
				Next

		Else
			$returnattrib=FileSetAttrib($Cmdline[$i], "+H")
			If Not $returnattrib Then $hata=True
		EndIf
	Next
If $hata Then
	MsgBox(16, "Hata!", "Bazı dosyaların özellikleri değiştirilirken hata oluştu!")
Else
	MsgBox(64, "Başarılı!", "Bütün dosyalar başarıyla gizlendi!")
EndIf
EndIf

Func _FileFolderList($path)
Dim $return[2][1000000]
If StringRight($path,1) <> "\" Then $path &="\"
$search = FileFindFirstFile($path & "*")
If @error = 1 Then  SetError(2)
If Not StringInStr(FileGetAttrib ($path), "D") Then Return SetError(1)

$afile = 0
$folder = 0
While 1
    $file = FileFindNextFile($search)
    If @error = 1 Then ExitLoop
	If @extended = 1 Then
		$folder += 1
		$return[1][$folder]=$path & $file

	Else
		$afile += 1
		$return[0][$afile]=$path & $file

	EndIf
WEnd
FileClose($search)
$return[1][0]=$folder
$return[0][0]=$afile
ReDim $return[2][_Max($folder, $afile)+1]
Return $return
EndFunc ;==>_FileFolderList
Func _Max($nNum1, $nNum2)
		If $nNum1 > $nNum2 Then
		Return $nNum1
	Else
		Return $nNum2
	EndIf
EndFunc   ;==>_Max

Buyur senin için hazırladım sabah sabah :) Dosya klasör mü değil mi diye kontrol eder klasör ise içindeki dosyaları da gizli yapar...Ben kendi fonksiyonum olan _FileFolderList kullandım (Diğerine uyuz oluyorum :lol: ) Sen isterse _FileListToArray kullanabilirsin tabiki..Bu arada klasörü gizli yapmıyor onun içinde

FileSetAttrib("KLASÖR DİZİNİ", "+H", 1) bunu kullanabiirsin :)

Link to comment
Share on other sites

Dostum sen varya kralsın..Trabzonda olsan sana iyi yemek yedirirdim:D Çok sağol ilgilendiğin için yanlız program çalısmadı desem kızar

mısın bilmemm :D Şöyle bir hata veriyor...

Autoıt Error

Line 15 (file ""):

Error : "Next" Statement with no matching "For" statement.

Eğer bunu yapamadıysan dediklerimi coda dökersen sevinirim Şöyle

Eğer klasör veya uzantılı dosya gizliyse gizliliği kaldır..Else yani değilse dosyayı veya klasörü gizle..Bunları yaparkene lütfen msgboxda bilgi vermesin:D ayrıca da yukarda yazdığın gibi de birden fazla dosya ve klasör secip gizleme veya gizlilği iptal etme olursaa

Dile benden ne dilersen.. Bunları istiyorum çünkü 1 haftaya kalmaz xp yapıyorum uploadlaycam sitenize

Şimdiden cok saol senide yordum ama....:D (Ayrıca sonda yazdığın gibi de klasörü gizli ypasın lütfen:D)

Link to comment
Share on other sites

If $Cmdline[0] <> 0 Then
	$attrib="+H"
	$hata=False
	For $i=1 To $Cmdline[0]
		If StringInStr(FileGetAttrib($Cmdline[$i]), "D") Then
			If StringInStr(FileGetAttrib($Cmdline[$i]),"H") Then $attrib ="-H"
			FileSetAttrib($Cmdline[$i], $attrib,1)
			$dosyalarilistele=_FileFolderList($Cmdline[$i])
			If Not @error Then
				For $t = 1 To $dosyalarilistele[0][0]
					$returnattrib=FileSetAttrib($dosyalarilistele[0][$t], $attrib)
					If Not $returnattrib Then $hata=True
				Next
			EndIf
		Else
			If StringInStr(FileGetAttrib($Cmdline[$i]),"H") Then $attrib ="-H"
			$returnattrib=FileSetAttrib($Cmdline[$i], $attrib)
			If Not $returnattrib Then $hata=True
		EndIf
	Next
If $hata Then
	MsgBox(16, "Hata!", "Bazı dosyaların özellikleri değiştirilirken hata oluştu!")
Else
	MsgBox(64, "Başarılı!", "Bütün dosyalar başarıyla gizlendi!")
EndIf
EndIf

Func _FileFolderList($path)
Dim $return[2][1000000]
If StringRight($path,1) <> "\" Then $path &="\"
$search = FileFindFirstFile($path & "*")
If @error = 1 Then  SetError(2)
If Not StringInStr(FileGetAttrib ( $path), "D") Then Return SetError(1)

$afile = 0
$folder = 0
While 1
    $file = FileFindNextFile($search)
    If @error = 1 Then ExitLoop
	If @extended = 1 Then
		$folder += 1
		$return[1][$folder]=$path & $file

	Else
		$afile += 1
		$return[0][$afile]=$path & $file

	EndIf
WEnd
FileClose($search)
$return[1][0]=$folder
$return[0][0]=$afile
ReDim $return[2][_Max($folder, $afile)+1]
Return $return
EndFunc ;==>_FileFolderList
Func _Max($nNum1, $nNum2)
		If $nNum1 > $nNum2 Then
		Return $nNum1
	Else
		Return $nNum2
	EndIf
EndFunc   ;==>_Max

Hızlı yazayım derken küçük bir endif i kaçırmışım :) Bu arada klasörü de gizle olayını hallettim.Hem klasörü hemde içindekiler dosyaları gizliyor..Bu arada ben Trabzonluyum Vakfıkebirde oturuyorum yemeği isterim bak :p

Edit:Gizliyse görünür görünürse gizli yapar..Ayrıca msg boxu istemiyosan kendin kaldırabilirsin ama zaten bir kere Msgbox veriyor bence kaldırma yani..

Link to comment
Share on other sites

Kusra bakma dün yorgundum erkenden yattım sorunu şimdi gördüm :) Onun çıkmasının sebebi sanırım birden fazla dosyanın özelliğini değiştirdiğinden oluyor.Sadece 1 dosya seçiliyken yapıyorsa gerçekten bir sorun ama diğer türlü yapabileceğimiz bişe yok windows işte :) Bu arada ben yomra fen de okuyorum ama özel konuları öm den konuşalım ;)

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...