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

Datei mit gleichnamigem Ordner verschieben?

Frage Entwicklung

Mitglied: hiob08

hiob08 (Level 1) - Jetzt verbinden

09.12.2008, aktualisiert 15:36 Uhr, 4104 Aufrufe, 6 Kommentare

Hallo zusammen,

suche eine Lösung für folgendes Problem:

Ich möchte ununterbrochen einen Ordner nach *.txt Dateien abfragen.
Befindet sich eine solche txt Datei im Ordner, soll das Skript 2 Sekunden warten und dann einen Ordner (der automatisch existiert, sobald die txt Datei existiert), welcher den gleichen Namen hat verschieben.

Also bsp.:
Datei: 12345.txt zusammen mit Ordner "12345" nach D:\Backup verschieben.

So weit bin ich schon:

01.
  
02.
:LOS 
03.
REM #### Da Win2k3 Resouce Kit nicht vorhanden 
04.
REM #### Trick, um unter Batch 2 Sekunden zu warten 
05.
 
06.
PING 1.1.1.1 -n 1 -w 2000 >NUL 
07.
 
08.
REM #### Prüfe, ob Datei vorhanden 
09.
D: 
10.
cd D:\Backup 
11.
if exists *.txt 
12.
 
13.
--Und hier weiß ich nicht mehr weiter-- 
14.
 
15.
goto LOS 
16.
 
Hat hemand schonmal einen ähnlichen Fall gehabt?
Mitglied: bastla
09.12.2008 um 11:32 Uhr
Hallo hiob08!

So ganz klar ist mir Dein Vorhaben nicht - nach Deinem Batchansatz sieht es so aus, als wolltest Du in D:\Backup nachsehen, ob eine Textdatei existiert, die Du dann eigentlich erst dorthin verschieben willst ...

Falls gemeint wäre, dass diese Überprüpfung zB für den Ordner "D:\In" gemacht werden soll, dann etwa so:
01.
@echo off & setlocal 
02.
:LOS 
03.
ping 127.0.0.1 -n 2>nul 
04.
for %%i in ("D:\In\*.txt") do ( 
05.
    move "%%i" "D:\Backup\">nul 
06.
    move "%%~dpni" "D:\Backup\">nul 
07.
08.
goto :LOS
Falls es möglich wäre, dass ein gleichnamiger Ordner in "D:\Backup" bereits existiert, müsstest Du Dir überlegen, was in diesem Fall zu geschehen hat - ein Überschreiben ließe sich etwa so realisieren:
01.
@echo off & setlocal 
02.
:LOS 
03.
ping 127.0.0.1 -n 2>nul 
04.
for %%i in ("D:\In\*.txt") do ( 
05.
    move "%%i" "D:\Backup\">nul 
06.
    if exist "D:\Backup\%%~ni" ( 
07.
        rd /s /q "D:\Backup\%%~ni" 
08.
        move "%%~dpni" "D:\Backup\">nul 
09.
10.
11.
goto :LOS
Grüße
bastla
Bitte warten ..
Mitglied: hiob08
09.12.2008 um 12:48 Uhr
Hallo bastla,

vielen dank für deine Antwort.

Hast schon recht, ist ein bißchen verwirrend. Ich versuche mal, dass ganze etwas übersichtlicher zu erklären.

Auf meinem Rechner gibt es einen Ordner D:\Backup.
In diesem Ordner befinden sich txt Dateien. Zu jeder txt Datei gibt es einen gleichnamigen Ordner, nur halt ohne die Endung txt, also bspw.
kjasdjhasdj.txt ->kjasdjhasdj

Der Ordner und die txt Datei werden von einem anderen Programm erzeugt. Ich möchte nun
ständig den Ordner antriggern und prüfen, ob sich eine txt Datei innerhalb des Ordners befindet. Wenn ja, soll sowohl die txt als auch der gleichnamige Ordner in ein anderes Verzeichnis gemoved werden.
Bitte warten ..
Mitglied: bastla
09.12.2008 um 12:57 Uhr
Hallo hiob08!

Dann musst Du eigentlich nur im Batch oben "D:\Backup" auf "D:\Anderer Ordner" und "D:\In" auf "D:\Backup" ändern (was viel leichter ginge, wenn ich, wie üblich, Variablen verwendet hätte )...

... was aber noch offen bleibt, ist die Frage der möglichen Existenz eines gleichnamigen Ordners in "D:\Anderer Ordner" bzw der Reaktion darauf.

Grüße
bastla
Bitte warten ..
Mitglied: hiob08
09.12.2008 um 13:23 Uhr
Hallo nochmal,

vielen dank!
Ein gleichnamiger Ordner bzw. txt Datei kann sich eigentlich nicht im Zielordner befinden, bzw. es ist sehr unwahrscheinlich, weil die txt- Datei (und somit der Ordner) per %random%%random%%random% erzeugt werden Das könnte ich aber dann per
move /Y erledigen, oder? Dann soll halt der "alte" Ordner überschrieben werden.

Das Skript, welches du vorgeschlagen hast, scheint ja im ersten Augenblick nicht kompliziert. Denoch habe ich einige Fragen. Wenn du Zeit/Lust hast, würde ich mich über eine Antwort sehr freuen!

01.
for %%i in ("D:\In\*.txt") do
Kann ich hier %%i als eine Art Zählvariable sehen, die einfach nur zählt, wie viele txt Dateien sich in D:\In befinden, oder hat %%i in diesem Fall den Dateinamen inne?

Wieso heißt die Variable %%i und nicht bspw. %i%?

01.
move "%%i" "D:\Backup\">nul 
Hiernach zu urteilen müsste in %%i der Dateiname stehen, richtig?
Und was macht das >nul am Ende der Zeile?

01.
"%%~dpni"
Und das überfordert mich leider komplett

Wie gesagt, ich weiß, dass es viele Fragen sind.. Würde mich sehr über eine Antwort freuen!

Danke nochmal!
Bitte warten ..
Mitglied: bastla
09.12.2008 um 13:40 Uhr
Hallo hiob08!

Das könnte ich aber dann per move /Y erledigen, oder?
Abgesehen davon, dass "move" in einem Batch automatisch mit "/y" ausgeführt wird: Leider nein - um den bestehenden Ordner durch den neu zu verschiebenden zu ersetzen, müsstet Du die zweite Variante oben verwenden.

Wieso heißt die Variable %%i und nicht bspw. %i%?
Da es sich um eine "for"-Laufvariable (die tatsächlich den Dateipfad enthält) handelt, weist diese einige Besonderheiten auf - die Schreibweise ohne abschließendes "%" ist eine davon.

Eine weitere berührst Du mit Deiner dritten Frage: Es ist nur für Parametervariable (%0 bis %9) und die Variablen der "for"-Schleife möglich, eine Pfadzerlegung vorzunehmen - "%%dpni" liefert daher Laufwerk ("drive"), Pfad und Name (ohne "extension") der Datei in "%%i".

Durch die Schleife werden der Reihe nach alle im Ordner befindlichen Textdateien erfasst (es könnten ja während der Pause theoretisch auch 2 Ordner + Textdateien erstellt worden sein).

Mehr zum Thema findest Du unter "for /?" (wenn Du Dich bis zum Ende durchkämpfst ).
Noch zum Rest der Frage 2: Das ">nul" hat nur optische Gründe - es wird damit die Ausgabe des "move"-Befehles ("1 Datei verschoben") nach "Nirgendwo" geschickt und damit unterdrückt.

Grüße
bastla
Bitte warten ..
Mitglied: hiob08
09.12.2008 um 15:36 Uhr
Funktioniert soweit alles!
SUPER!!! Danke für die blitzschnelle Hilfe
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(2)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Vmware
gelöst Manche VMs lassen sich nicht in Ordner verschieben (3)

Frage von Zippo97 zum Thema Vmware ...

Batch & Shell
gelöst Batch - Datei aus Ordner einlesen mit Ausnahmen! (4)

Frage von Daedrafaction zum Thema Batch & Shell ...

Batch & Shell
gelöst Dateien anhand des Namens in neue Ordner verschieben (17)

Frage von Cookiemonster zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...