Ein Bug:
[Blockierte Grafik: http://img18.imageshack.us/img18/4915/6b48582f016f424eba66234.png]
Ein Bug:
[Blockierte Grafik: http://img18.imageshack.us/img18/4915/6b48582f016f424eba66234.png]
Vielen Dank!
[autoit]#include <File.au3>
[/autoit][autoit][/autoit][autoit]Global $sSourceDir = "G:\PRJ\0000000\"
Global $sDestDir = "T:\Dino\0000000\"
Global $asExcludeDir[4] = [ "Typicals", "install", "Dokumentation", "Tools"]
_DirCopyExclude($sSourceDir,$sDestDir,$asExcludeDir,1)
[/autoit][autoit][/autoit][autoit]Func _DirCopyExclude($sSourceDir, $sDestDir, $asExcludeDir, $iFlag)
$asFiles = _FileListToArray($sSourceDir, "*", 1)
For $iFiles = 1 To $asFiles[0]
FileCopy($sSourceDir & "\" & $asFiles[$iFiles], $sDestDir & "\" & $asFiles[$iFiles],
Next
$asDirs = _FileListToArray($sSourceDir, "*", 2)
For $iDirs = 1 To $asDirs[0]
$fExclude = False
For $iIndex = 1 To UBound($asExcludeDir)
If $asDirs[$iDirs] = $asExcludeDir[$iIndex - 1] Then $fExclude = True
Next
If $fExclude = False Then DirCopy($sSourceDir & "\" & $asDirs[$iDirs], $sDestDir & "\" & $asDirs[$iDirs], $iFlag)
Next
EndFunc ;==>_DirCopyExclude
verstehe ich nicht
Hallo Leute,
ich habe einen Quellordner "G:\PRJ\0000000" der mit der Zeit mit Unterordner ergänzt wird.
Jetzt möchte ich Quellordner nach "T:\Dino\0000000" mit DirCopy kopieren, jedoch mehrere bestimmten Unterordner (Typicals, install, Dokumentation, Tools) ausschließen.
Geht das und wenn ja wie?
Viele Grüße,
Dino
Vielen Dank!
so?
$sPfad = "D:\db\"
$aRenamedFiles = _AddExt_txt($sPfad)
; == Bearbeitung
; == Rückbenennen
_Rename_Back($aRenamedFiles)
Func _AddExt_txt($_sPath)
Local $oFSO = ObjCreate('Scripting.FileSystemObject')
Local $oFile, $sExt
Local $aFiles = _GetFilesFolder_Rekursiv($_sPath, -1, 0)
Local $sRet = ''
For $i = 1 To $aFiles[0]
$oFile = $oFSO.GetFile($aFiles[$i])
$sExt = $oFSO.GetExtensionName($oFile)
If $sExt = '0' Then
$oFSO.MoveFile($aFiles[$i], $aFiles[$i] & '.txt')
$sRet &= $aFiles[$i] & '.txt' & Chr(0)
EndIf
Next
Return StringSplit(StringTrimRight($sRet, 1), Chr(0))
EndFunc
Func _Rename_Back($_aFiles)
For $i = 1 To $_aFiles[0]
FileMove($_aFiles[$i], StringTrimRight($_aFiles[$i], 4))
Next
EndFunc
;==================================================================================================
; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0 ,[$sDelim='0']]]])
; Description: Rekursive Auflistung von Dateien und/oder Ordnern
; Parameter(s): $sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad)
; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle (Standard)
; $iDir -1 Dateien+Ordner(Standard), 0 nur Dateien, 1 nur Ordner
; optional: $iRetType 0 gibt Array, 1 gibt String zurück
; optional: $sDelim legt Trennzeichen für Stringrückgabe fest
; 0 -@CRLF (Standard) 1 -@CR 2 -@LF 3 -';' 4 -'|'
; Return Value(s): Array (Standard) od. String mit den gefundenen Pfaden der Dateien und/oder Ordner
; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner
; Author(s): BugFix (bugfix@autoit.de)
;==================================================================================================
Func _GetFilesFolder_Rekursiv($sPath, $sExt='*', $iDir=-1, $iRetType=0, $sDelim='0')
Global $oFSO = ObjCreate('Scripting.FileSystemObject')
Global $strFiles = ''
Switch $sDelim
Case '1'
$sDelim = @CR
Case '2'
$sDelim = @LF
Case '3'
$sDelim = ';'
Case '4'
$sDelim = '|'
Case Else
$sDelim = @CRLF
EndSwitch
If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0
If $sExt = -1 Then $sExt = '*'
If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
_ShowSubFolders($oFSO.GetFolder($sPath),$sExt,$iDir,$sDelim)
If $iRetType = 0 Then
Local $aOut
$aOut = StringSplit(StringTrimRight($strFiles, StringLen($sDelim)), $sDelim, 1)
If $aOut[1] = '' Then
ReDim $aOut[1]
$aOut[0] = 0
EndIf
Return $aOut
Else
Return StringTrimRight($strFiles, StringLen($sDelim))
EndIf
EndFunc
Func _ShowSubFolders($Folder, $Ext='*', $Dir=-1, $Delim=@CRLF)
If Not IsDeclared("strFiles") Then Global $strFiles = ''
If ($Dir = -1) Or ($Dir = 0) Then
For $file In $Folder.Files
If $Ext <> '*' Then
If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
$strFiles &= $file.Path & $Delim
Else
$strFiles &= $file.Path & $Delim
EndIf
Next
EndIf
For $Subfolder In $Folder.SubFolders
If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim
_ShowSubFolders($Subfolder, $Ext, $Dir, $Delim)
Next
EndFunc
Diese Meldung bekomme ich:
[autoit]D:\- AUTOIT -\Dateien ohne Endung\txt entfernen.au3(12,60) : ERROR: _GetFilesFolder_Rekursiv(): undefined function.
[/autoit][autoit][/autoit][autoit]Local $aFiles = _GetFilesFolder_Rekursiv($_sPath, -1, 0)
[/autoit][autoit][/autoit][autoit]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
[/autoit][autoit][/autoit][autoit]D:\- AUTOIT -\Dateien ohne Endung\txt entfernen.au3 - 1 error(s), 0 warning(s)
[/autoit]Vielen Dank! Es funktioniert!
Hallo BugFix,
es funktioniert prima DANKE!!!
Ich möchte die Daten jetzt in einem anderen Programm verarbeiten und anschließend die Dateienendungen .txt entfernen.
In diese Richtung geht es sicherlich einfacher, oder
Viele Grüße,
Dino
Hallo Leute,
wie kann ich im Verzeichnis "D:\para\dib\" incl. Unterverzeichnisse nur bei Dateien, die keine Dateiendung haben, die Dateiendung .txt anhängen?
Viele Grüße,
Dino
Hallo Veronesi,
ich habe in der erste Zeile noch #RequireAdmin eingefügt und es funktioniert prima.
Vielen Dank!
Viele Grüße,
Dino
chip: Ich denke schon, dass die Parameter richtig sind, oder was meinst Du?
chesstiger : mit -to geht es auch nicht.
[Blockierte Grafik: http://img152.imageshack.us/img152/2062/4faf919bec8d83159500000.png]
Das hilft auch nicht, die Rechte werden nicht gesetzt.
Ich habe es so ohne Erfolg probiert:
[autoit]#RequireAdmin
;Prüfen ob die SETAcl vorhanden ist
$setacl = "D:\Tools\SetACL.exe"
$ProgDir="C:\Program Files (x86)\Altec\"
If FileExists($setacl) Then
;Rechte setzen
RunWait($setacl & ' -on "' & $pfad & '" -ot file ' & _
'-actn ace -ace "n:Benutzer;p:full"' _
, "", @SW_HIDE)
Else
Msgbox(16,"ACHTUNG","Es existiert keine Setacl.exe auf D:\Tools." &
@CRLF & "Bitte diese dort hinein kopieren")
Exit
EndIf
Hallo Leute,
ich habe versucht mit SetACL.exe die Rechte im Ordner C:\Program Files (x86)\Altec\ den Benutzer die Rechte fürs Ändern zu setzen.
Leider hat es nicht funktioniert. Was muss ich bitte ändern?
;Prüfen ob die SETAcl vorhanden ist
$setacl = "D:\Tools\SetACL.exe"
$ProgDir="C:\Program Files (x86)\Altec\"
If FileExists($setacl) Then
;Rechte setzen
RunWait($setacl & ' -on "' & $pfad & '" -ot file ' & _
'-actn setprot -op "dacl:p_nc;sacl:nc" ' & _
'-actn setowner -ownr "n:Administrators" ' & _
'-actn ace -ace "n:Benutzer;p:full"' _
, "", @SW_HIDE)
Else
Msgbox(16,"ACHTUNG","Es
existiert keine Setacl.exe auf D:\Tools." &
@CRLF & "Bitte diese dort hinein kopieren")
Exit
EndIf
Viele Grüße,
Dino
gelöst....
Danke!
Das korrekte Attribut für "Position" (JobTitle) habe ich mir rausgesucht.
Das Ersetzen im Feld mache ich das auch mit _OL_ItemModify ?
Hi water,
so habe ich und es funktioniert perfekt
[autoit];~ Leert für die ausgewählten Kontakte den Eintrag im Feld "Weitere Vorn."
[/autoit][autoit][/autoit][autoit]#include <OutlookEX.au3>
[/autoit][autoit][/autoit][autoit]Global $oOL = _OL_Open()
If @error Then Exit MsgBox(16, "Error", "Error opening connection to Outlook. @error = " & @error & ", @extended = " & @extended)
;~ MsgBox(16, "Kontakte ändern", "Bitte die zu ändernden Kontakte auswählen!")
Global $aSelected = _OL_FolderSelectionGet($oOL)
If @error Then Exit MsgBox(16, "Error", "Error returned by _OL_ItemSelectionGet. @error = " & @error & ", @extended = " & @extended)
For $i = 1 to $aSelected[0][0]
;~ $aItem = _OL_ItemGet($oOL, $aSelected[$i][0], Default, "FirstName,LastName")
;~ _ArrayDisplay($aItem)
If @error Then Exit MsgBox(16, "Error", "Error returned by _OL_ItemGet. @error = " & @error & ", @extended = " & @extended)
_OL_ItemModify($oOL, $aSelected[$i][0], Default, "MiddleName=" & "")
If @error Then Exit MsgBox(16, "Error", "Error returned by _OL_ItemModify. @error = " & @error & ", @extended = " & @extended)
Next
_OL_Close($oOL)
Wenn ich für die markierten Kontakte im Feld "Position" z.B. diesen Text PL durch Projektleiter ersetzen möchte, was muss ich bitte anpassen?
[Blockierte Grafik: http://www.imgbox.de/users/public/images/A7nsQcxUzP.jpg]
Eigentlich möchte ich "" nicht ersetzen sondern entfernen.
Ich habe es ersetzen geschrieben, weil ich die Funktion evtl. an der andere Stelle gebrauchen könnte, wo ich nur das Feldname anpasse.
Damit wäre ich flexibler.