Suche in Batch

Mitglied: 30407

30407

23.05.2006, aktualisiert 24.05.2006, 5302 Aufrufe, 12 Kommentare

Hi,

ich würde gerne ein Batchprogramm schreiben,
1. ....dass nach einem bestimmten Ordner sucht.
2. Wenn dieser Ordner vorhanden ist sich selbst als Kopie darin ablegt.

Ist das in einer Batch möglich ?
Mitglied: n.beetz
23.05.2006 um 22:33 Uhr
Hallo,

na willst Du einen kleinen Virus schreiben? :-) face-smile

Muss es denn eine Batch sein oder gehen auch WScript?

Gruß

Norbert
Bitte warten ..
Mitglied: Biber
24.05.2006 um 09:26 Uhr
Moin,
vielleicht geht es mit WScript schneller, aber als Batch lässt es sich schneller Formulieren....


Der Parameter nach dem "for /R" kann ein bestimmtes Laufwerk "C:\" , "E:\"... oder halt das aktuelle ("\") sein.
Das @ECHO ist nur zum Testen - Zum Scharfmachen das "@ECHO" löschen.
Test am CMD-Prompt:

Hope That Helps
Biber
Bitte warten ..
Mitglied: 30407
30407 (Level 1)
24.05.2006 um 11:32 Uhr
Hi

bei dem Code:
<Code>
for /R d:\ %%i in (.) do @if /i [%%~ni]==[GesuchtesDir] copy %%~dpnx0 %%~dpni
<Code>

muss ich doch nur "GesuchtesDir" durch den Namen der Datei ersetzen (z.B. test), oder ?
Jedoch kam bei immer Fehlermeldungen, das das System das Verzeichnis nicht finden kann !
Woran liegt das ?
Bitte warten ..
Mitglied: Biber
24.05.2006 um 11:57 Uhr
Uups, sorry,

diesmal hatte ich ein Prozentzeichen zuviel in der Batch-Variante:

also bitte ein schlichtes %~dpnx0 statt %%~dpnx0

(Kommt vom Posten ungetesteter Schnipsel....ich wollte es mir eigentlich abgewöhnen.
so wie das Rauchen und das Fluchen...*grmbl*)

Gruß
Biber
Bitte warten ..
Mitglied: 30407
30407 (Level 1)
24.05.2006 um 12:57 Uhr
Hi,
sry aber der neue Code:
<Code>
for /R d:\ %%i in (.) do @if /i [%%~ni]==[test²] copy %~dpnx0 %%~dpni
<Code>

funktioniert auch nicht. Neue Fehlermeldung : Syntaxfehler.

² für den Ordner test

Gruss Inkognitar
Bitte warten ..
Mitglied: Biber
24.05.2006 um 13:06 Uhr
Merkwürdig...hier mein Test:

???
Biber
[Edit] Aaaaaaaaaber: Wenn der Zielordner fürs Copy "c:\Dokumente und Einstellungen\..." heißt, dann gibts Syntaxfehler.

-->Zielpfad in Anführungszeichen setzen wegen Leerzeichen.
[/Edit]
Bitte warten ..
Mitglied: 30407
30407 (Level 1)
24.05.2006 um 13:27 Uhr
Hi,

also eigentlich heisst, der Pfad C:\Test --> keine Anführungszeichen nötig.
Außerdem bin ich jetz ganz durch einander : Brauch man nun ein "@" Symbol vor "For" oder nicht ? Auch dachte ich, ich sollte @echo löschen. ?!
Also habe ich folgendes ausprobiert:
<Code>
@echo off
@for /R c:\ %%i in (.) do @if /i [%%~ni]==[test] echo copy %~dpnx0 %%~dpni
<Code>

In der Konsole erchien dann:

copy C:\Dokumente und Einstellungen\Besitzer\Desktop\suche.bat c:\Dokumente und Einstellungen\Besitzer\Eigene Dateien\ChessBase\Test
copy C:\Dokumente und Einstellungen\Besitzer\Desktop\suche.bat c:\MeineProjekte\test
copy C:\Dokumente und Einstellungen\Besitzer\Desktop\suche.bat c:\Programme\Techland\Chrome\JavaChromeGame\NetModule\Objects\Test
copy C:\Dokumente und Einstellungen\Besitzer\Desktop\suche.bat c:\Programme\Techland\Chrome\JavaChromeGameNet\NetModule\Objects\Test
copy C:\Dokumente und Einstellungen\Besitzer\Desktop\suche.bat c:\Programme\Valve\Steam\SteamApps\SourceMods\Halloween\materials\models\test
copy C:\Dokumente und Einstellungen\Besitzer\Desktop\suche.bat c:\Programme\Valve\Steam\SteamApps\SourceMods\Halloween\models\test
copy C:\Dokumente und Einstellungen\Besitzer\Desktop\suche.bat c:\Programme\Valve\Steam\SteamApps\SourceMods\metastasis\materials\test
copy C:\Dokumente und Einstellungen\Besitzer\Desktop\suche.bat c:\test

Jedoch fand ich in keinem, suche.bat ! Woran liegt das ?

Edit: Mit "%%~dpni" hat es auch nicht funktioniert.
Bitte warten ..
Mitglied: Biber
24.05.2006 um 13:59 Uhr
Na, Inkognitar,
verwirren wollte ich Dich nicht, also:

a) Das "@" vor einem CMD-Befehl unterdrückt nur dessen ECHO-Anzeige.
Wenn Du also eine @FOR..IN..DO-Anweisung abschickst vom CMD-Prompt aus, wird die Anweisung selbst NICHT noch mal angezeigt.

Teste mal am CMD-Prompt
for %i in (1,2,3) do echo %i
-und-
for %i in (1,2,3) do @echo %i

..dann siehst Du den Unterschied.

b) Der von mir gepostete Schnipsel macht ja auch kein "copy ..von...nach..", sondern nur eine Simulation "ECHO copy ..von...nach.."
Lösche dieses Wort ECHO, dann funktioniert es.

Gruß
Biber
Bitte warten ..
Mitglied: 30407
30407 (Level 1)
24.05.2006 um 15:21 Uhr
Hi,

sry aber wenn ich aus dem Code:
<Code>
@echo off
@for /R c:\ %%i in (.) do @if /i [%%~ni]==[test] echo copy %~dpnx0 %%~dpni
<Code>

das echo weglösche:
<Code>
@echo off
@for /R c:\ %%i in (.) do @if /i [%%~ni]==[test] copy %~dpnx0 %%~dpni
<Code>

kommt wieder die fehlermeldung: Syntaxfehler.
cmdausgabe:

Syntaxfehler.
Syntaxfehler.
Syntaxfehler.
Syntaxfehler.
Syntaxfehler.
Syntaxfehler.
Syntaxfehler.
Syntaxfehler.

gruss Inkognitar
Bitte warten ..
Mitglied: Biber
24.05.2006 um 15:42 Uhr
Siehe oben: numm den letzten von mir in einem Kästchen stehenden Oneliner.
Den, wo der Copy-Zielparameter in Hochkommata steht:

Der Syntaxfehler kommt von Zielverzeichnissen mit Leerzeichen im Verzeichnisnamen.
Ehrlich

Biber
Bitte warten ..
Mitglied: 30407
30407 (Level 1)
24.05.2006 um 16:24 Uhr
Hi,

ich habe es nochmal mit den Anführungszeichen probiert:
<Code>
@echo off
for /R c:\ %%i in (.) do @if /i [%%~ni]==[test] copy %~dpnx0 "%%~dpni"
<Code>

jedoch kam wieder die Syntaxfehlermeldung. Kann es sein das "C:\Dokumente und Einstellungen\Besitzer\..." falsch ist, sondern C:\Dokumente" "und" "Einstellungen\Besitzer lauten müsste und daher der Compiler es nicht versteht ? Jedoch müsste er dann eigentlich bei C:\test keine Probleme haben, aber genau da hat er auch den Syntaxfehler gemeldet.

Edit: Es muss an "Dokumente und Einstellungen" liegen, das er die bei C:\test nicht funktioniert liegt, woll daran das sich suche.bat auf dem Desktop befindet und damit im Verzeichnis C:\Dokumente und Einstellungen\Besitzer\Desktop ist. ==> Pfad von suche.bat muss auch in "".

Edit2: Ich habe es geschafft ! Vollständige Lsg:
@echo off
for /R c:\ %%i in (.) do @if /i [%%~ni]==[test] copy "%~dpnx0" "%%~dpni"

Edit3: Ich hätte noch eine Frage: Kann ich die batch datei in dem gefunden verzeichnis unter einem anderen Namen abspeichern und unter verschiedenen Namen im gefundenen Verzeichnis mehrmals speichern ?
Bitte warten ..
Mitglied: Biber
24.05.2006 um 18:04 Uhr
;-) face-wink
Dass die *.bat-Datei selbst auf dem Desktop liegen könnte...darauf bin ich natürlich auch nicht gekommen. Aber dann wären -wie Du auch selbst geschrieben hast- die Anführungszeichen der richtige Weg.

Wenn Die Bat-Datei einen neuen Namen bekommen soll, dann:
-->löst auf zu:
Gruß und schönes Wochenende
Biber
Bitte warten ..
Heiß diskutierte Inhalte
LAN, WAN, Wireless
Starlink im Unternehmen?
0xFFFFVor 15 StundenFrageLAN, WAN, Wireless37 Kommentare

Guten Morgen Admins, leider leiden wir darunter, dass wir uns hier in DE noch in einem Entwicklungsland was die Internetanbindung angeht, sehr. Nun kam ...

Off Topic
Klimaanlage im Serverraum
gelöst imebroVor 12 StundenFrageOff Topic19 Kommentare

Hallo, wir haben einen kleinen Serverraum (viell. 5 - 6 m²), in dem ein Serverschrank steht. Der Raum hat kein Fenster!!! Darin befinden sich ...

Microsoft
Datenkrake - Browser
DennisWeberVor 1 TagErfahrungsberichtMicrosoft11 Kommentare

Hallo zusammen, ich empfehle euch mal definitiv in "Temp" Verzeichnis eures Browsers zu schauen. Es war für mich erschreckend, wie viele wichtige Dokumente und ...

Netzwerkmanagement
Sicherheitsrisiken Synology DS Admin Konto
RitchtoolsVor 1 TagFrageNetzwerkmanagement6 Kommentare

Hallo Zusammen, ich habe die Pflege von einem Firmen NAS übernommen (Synology) es sind mehrere Rechner im Netzwerk die auf Daten zugreifen. Leider hat ...

Windows 10
Windows 10 hängt bei Neustart immer bei "Bitte warten" über Stunden
gelöst Odde23Vor 13 StundenFrageWindows 1023 Kommentare

Ich habe seit längerem, um genau zu sein seit gut einem Jahr, da wurde der Rechner gekauft, das Problem, dass der Rechner bei einem ...

Windows 10
Windows 10 System Recovery Ordner fast 60 GB - Wie löschen?
Looser27Vor 1 TagFrageWindows 106 Kommentare

Guten Morgen, bei einem unserer Clients funktioniert scheinbar das automatische Aufräumen nach Updates / Upgrades nicht. Wie kann ich dem Kollegen auf die Schnelle ...

Windows 10
Windows 10 verliert die Druckertreiber
KMP1988Vor 1 TagFrageWindows 1010 Kommentare

Servus zusammen, wir haben bei einem Kunden folgende Konstellation: - Server2019 (AD, DNS, DHCP) - Server2019 (Print-Server-Rolle) - W10-Clients Die Drucker werden übers Logon-Scirpt ...

DNS
Opendns.com - Kosten?
cordialVor 1 TagFrageDNS2 Kommentare

Moin, Ich möchte gerne den OpenDNS Dienst mal verstehen. Hab da schon länger einen Account mit Filterung. Die "Free" Edition bei OpenDNS ist doch ...