Batch-Datei

  • #1
O

owni

Guest
Hi,

hab mal eine Frage kennt sich hier einer mit Batch programmierung aus?? Hätte ein paar fragen wenn es möglich ist.

Mfg
owni

:verschoben1: von Windows NT/2000
 
  • #2
Es geht bei mir um ein folgendes Problem.

Mir wurde eine .bat gegeben und soll diese Erweitern


Code zur Zeit ist:

@Echo=off
cls

:: Pfad, in dem das Löschprogramm delage32.exe zu finden ist

cd C:\mmu\FileDelete_Age


:: [Programmaufruf] [Pfad, der zu löschende Datei(en)] [Anzahl der Tage]
:: [/created sucht nach dem Erstelldatum,
:: /recurse durchsucht auch die Unterordner,
:: /preview zeigt die zu löschenden Dateien, löscht aber nocht nicht]

delage32.exe I:\ExcelSheets\*.* 60 /created /recurse

Dieser Ruft die delage.exe auf und da werden alle ExcelSheets gelöscht die älter als 60 Tage sind.


Jetzt hätte ich eine Frage !

Kann mir einer sagen wie ich den obrigen Code abändern muss damit der diese Dateien zwar löscht, aber in den Ordner wo eine .txt ist mit dem Namen notdelete.txt , da sollen die ExcelSheets nicht gelöscht werden.

1.Frage : Ist es machbar?
2.Frage : Wie? Hab gar keine .bat-programmierungskenntnisse.

DANKE !
 
  • #3
würde so aussehn ...

@echo off
cls

:: Pfad, in dem das Löschprogramm delage32.exe zu finden ist

cd C:\mmu\FileDelete_Age

:: Prüfen ob Datei notdelete.txt vorhanden ist, wenn ja gehe auf ende

if exist notdelete.txt goto ende

:: [Programmaufruf] [Pfad, der zu löschende Datei(en)] [Anzahl der Tage]
:: [/created sucht nach dem Erstelldatum,
:: /recurse durchsucht auch die Unterordner,
:: /preview zeigt die zu löschenden Dateien, löscht aber nocht nicht]

delage32.exe I:\ExcelSheets\*.* 60 /created /recurse

:ende


greetz

hugo
 
  • #4
Hi Hp,

danke für deine Hilfe !

Hab noch eine Kurze frage. Wo müsste ich dein Code einfügen?? In die delage 32.exe kann ich ja nicht mit rechte-Maustaste -> edit öffnen müsste dieser code in .bat datei rein??

Danke !!
 
  • #5
owni schrieb:
Hab noch eine Kurze frage. Wo müsste ich dein Code einfügen?? In die delage 32.exe kann ich ja nicht mit rechte-Maustaste -> edit öffnen  müsste dieser code in .bat

na in die .bat datei natürlich ... sorry, aber wenn dir das noch nicht klar ist, dann solltest du dich erstmals schlau nachen, bevor du batch-dateien manipullierst. unter umständen geht da was schief und die .bat datei macht was ganz anderes als du erwartest ...

greetz

hugo
 
  • #6
Hi,

danke für dein Code  :1

Werde auch net so oft mit batches arbeiten, war nur ne Not-Lösung vom cheffe..

Jedenfalls danke !
 
  • #7
Hi Hp,

muss leider sagen, dass der Code nicht funktioniert :'(

Der Löscht bei mir trotzdem alle Dateien die älter sind als 60 Tage obwohl die Datei notdelete.txt existiert.

Hast du vielleicht noch ein Vorschlag?

DANKE !

MFG
owni
 
  • #8
also bei mir funktioniert die abfrage if exist ... richtig ... vielleicht hast du ja einen fehler im script ...

greetz

hugo
 
  • #9
Wo wird bei dir nach der notdelete.txt gesucht?
Dieses .txt kann sich in den Unterordnern von I:\ExcelSheets\

Es sind 5 Unterordner, sobald ein notdelete.txt in ein Unterordner z.b Kosten befindet.
Dann soll in diesem Ordner nichts gelöscht werden.
In den anderen z.b Gewinn, Arbeitnehmervorschläge usw. sollen die .xls files gelöscht werden.
 
  • #10
Das Programm delage32 durchsucht ja alle Unterverzeichnisse. Also müsste wohl entweder die gewünschte Funktionalität direkt in dieses Programm integriert werden oder man müsste selbst alle Verzeichnisse durchsuchen und für jedes Verzeichnis delage32 ohne den Schalter /recurse aufrufen, falls sich keine Datei namens notdelete.txt dort befindet. Denn sobald Du delage32 mit /recurse startest, hast Du ja keine Eingriffsmöglichkeit mehr, kannst also auch nicht prüfen, ob so eine Datei in irgendwelchen Unterverzeichnissen existiert.
 
  • #11
Hi,

hab mir paar Tutorials reingezogen und durch experimentieren klappt es jetzt sehr gut !!
Anbei den Code

Code:
Echo=on
cls

:: Pfad, in dem das Löschprogramm delage32.exe zu finden ist

cd F:\FileDelete_Age

:: [Programmaufruf] [Pfad, der zu löschende Datei(en)] [Anzahl der Tage]
:: [/created sucht nach dem Erstelldatum,
:: /recurse durchsucht auch die Unterordner,
:: /preview zeigt die zu löschenden Dateien, löscht aber nocht nicht]

dir I:\ExcelSheets /ad /b >dirlisting.txt
FOR /f %%f IN (dirlisting.txt) DO call :loop %%f
goto ende

:loop
set DIR=%~1
IF NOT EXIST I:\ExcelSheets\%DIR%\notdelete.txt delage32.exe I:\ExcelSheets\%DIR%\*.* 60 /created /recurse
:ende
:del dirlisting.txt

MFG
owni
 
  • #12
Evtl. besser alle Verzeichnisse durchsuchen und dann delage32 ohne recurse, wie gesagt? Es sei denn, die Existenz oder Nichtexistenz von notdelete.txt soll auch für - vielleicht mal hinzukommende - tiefer liegende Unterverzeichnisse gelten. Ich habe es mal etwas geändert (ungetestet & ohne Gewähr):

---

@echo off
cls

set workdir=I:\ExcelSheets
set delagedir=F:\FileDelete_Age

for /f %%f in ('dir /ad /b /s %workdir%') do call :loop %%f
goto :eof

:loop
set srchdir=%~1
IF NOT EXIST %srchdir%\notdelete.txt ( 
  echo Zum Loeschen freigegeben: %srchdir%
  %delagedir%\delage32.exe %srchdir%\*.xls 60 /created
) ELSE (
echo Loeschen nicht erlaubt in: %srchdir%
)

---

// Ach ja: So oder so besser keine Pfade mit Leerzeichen verwenden ...
 
  • #13
Hi,

hab eben bei mir gemerkt das der die Pfade mit Leerzeichen nicht nimmt bzw. nur den ersten Teil, woran liegt das? Kann man das irgendwie umgehen, weil bei müssten auch die Pfade mit Leerzeichen genommen werden.

MFG
owni
 
  • #14
owni schrieb:
hab eben bei mir gemerkt das der die Pfade mit Leerzeichen nicht nimmt bzw. nur den ersten Teil, woran liegt das? Kann man das irgendwie umgehen, weil bei müssten auch die Pfade mit Leerzeichen genommen werden.

setz den pfad bzw. die variable die den pfad setz in hochkomma ...

greetz

hugo
 
  • #15
Hi,

nach langer suche in google habe ich einen Ansatz gefunden und tatsächlich hat es geklappt.

Code:
FOR /f delims= %%f IN (dirlisting.txt) DO call :loop %%f

mit diesem delims=  wird dann der ganze Pfad genommen.

Danke an euch für eure Hilfe

MfG
owni
 
Thema:

Batch-Datei

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben