Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Suche in Batch

Frage Entwicklung Batch & Shell

Mitglied: 30407

30407 (Level 1)

23.05.2006, aktualisiert 24.05.2006, 5169 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?

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....

01.
... 
02.
for /R d:\ %%i in (.) do @if /i [%%~ni]==[GesuchtesDir] @ECHO copy %%~dpnx0 %%~dpni
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:
01.
 
02.
(= 9:25:01  D:\temp=) 
03.
>for /R d:\ %i in (.) do @if /i [%~ni]==[backup1] @echo copy mein.bat %~dpni 
04.
copy mein.bat d:\temp\Backup1
Hope That Helps
Biber
Bitte warten ..
Mitglied: 30407
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
01.
for /R d:\ %%i in (.) do @if /i [%%~ni]==[GesuchtesDir] copy %~dpnx0 %%~dpni
(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
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:
01.
 
02.
(=13:04:29  E:\=) 
03.
>type f:\Administrator\Inkognitar.bat 
04.
@for /R d:\ %%i in (.) do @if /i [%%~ni]==[backup1] ECHO copy %~dpnx0 %%~dpni 
05.
 
06.
(=13:04:51  E:\=) 
07.
>f:\Administrator\Inkognitar.bat 
08.
copy f:\Administrator\Inkognitar.bat d:\temp\Backup1
???
Biber
[Edit] Aaaaaaaaaber: Wenn der Zielordner fürs Copy "c:\Dokumente und Einstellungen\..." heißt, dann gibts Syntaxfehler.
01.
@for /R d:\ %%i in (.) do @if /i [%%~ni]==[backup1] ECHO copy %~dpnx0 "%%~dpni"
-->Zielpfad in Anführungszeichen setzen wegen Leerzeichen.
[/Edit]
Bitte warten ..
Mitglied: 30407
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
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:
01.
@echo off 
02.
for /R c:\ %%i in (.) do @if /i [%%~ni]==[test] copy %~dpnx0 "%%~dpni"
Der Syntaxfehler kommt von Zielverzeichnissen mit Leerzeichen im Verzeichnisnamen.
Ehrlich

Biber
Bitte warten ..
Mitglied: 30407
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

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:
01.
::----------snipp Inkognitar.bat 
02.
for /R c:\ %%i in (.) do @if /i [%%~ni]==[whatever] ECHO copy "%~dpnx0" "%%~dpni\NeuerBatName.bat" 
03.
:: --------snapp Inkognitar.bat
-->löst auf zu:
01.
copy "c:\Dokumente und Einstellungen\Administrator\Desktop\Inkognitar.bat"  "c:\Im abgelegenen Verzeichnis\whatever\NeuerBatName.bat"
Gruß und schönes Wochenende
Biber
Bitte warten ..
Neuester Wissensbeitrag
Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (22)

Frage von patz223 zum Thema Windows Userverwaltung ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (19)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...