Top-Themen

Aktuelle Themen (A bis Z)

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

Variablen und Wildcards???

Mitglied: chris-koehne

chris-koehne (Level 1) - Jetzt verbinden

26.08.2005, aktualisiert 11.09.2005, 7320 Aufrufe, 9 Kommentare

Hallöle,

ich möchte gerne per Batchdatei ein File von Verzeichnis A nach Verzeichnis B verschieben. Es gibt auf C:\ folgende Verzeichnisse:

c:\ABLAGE\1 - Beschreibung
c:\input

Das File aus c:\input\1.txt möchte ich nach c:\ABLAGE\1 - Beschreibung\1.txt verschieben.
Die 1 aus dem Dateinamen 1.txt gibt mir den Anfang des Verzeichnisses c:\ABLAGE\1 - Beschreibung an. Die 1 lese ich aus, den Rest möchte ich beim verschieben gerne über ein Wildcard vervollständigen.

Wenn ich es so mache klappt es aber nicht:

--------------------schnipp----------
@set meinroot=c:\input
@set copyroot=c:\ABLAGE
@CHDir %meinroot%
@set datei=1.txt
@set Ver=%datei_alt:~0,1%
@echo %Ver%
@Move %meinroot%\%datei% %copyroot%\%Ver%*\%datei% (In dieser Zeile %Ver%*)
Was mache ich nur falsch, oder gehen Wildcards garnicht???

Danke und Gruß, Chris
Mitglied: Biber
26.08.2005 um 10:48 Uhr
Moin chris,
vermutlich Tippfehler:
@set datei=1.txt
@set Ver=%datei_alt:~0,1%

Und das Vervollständigen über "*" geht so nicht. Der Text sollte aus einer Variablen (%1) kommen. Vielleicht meinst Du ja oben in Deinem Bätchelchen mit" \%Ver%*" auch "\%Ver%%*"....also ein "%Ver%" +"%*" ...aber das würde ich zumindest in zwei Zeilen auseinanderziehen (1. ZielVerzeichnis anlegen und 2. in Zielverzeichnis kopieren).
Oder legt Dein "move"-Befehl das Verzeichnis ggf. an?


Nicht weiter getestet.
Frank / der Biber aus Bremen
Bitte warten ..
Mitglied: chris-koehne
26.08.2005 um 11:16 Uhr
Hi Frank,

habs mir schon gedacht, dass das mit dem * so nicht klappt. Nochmal ein wenig detailierter mein Problem.

Es gibt folgende (nicht durch mich festgelegte) Ordnerstruktur:

- 1
- 12
- 13
- 131
- 135
- 135.3
- 135.31
- 135.33
- 135.336

Im Input Verzeichnis liegt nun eine Datei mit dem Namen 135336.pdf. Diese soll per Batch in den Ordner \..\135.336 verschoben werden, das klappt auch soweit alles schon ganz gut.
Jetzt kommts aber: Irgendwann einmal (wahrscheinlich morgen ) wünscht man sich die Odnernamen etwas aussagekräftiger benennen zu können. Der Anfang, also 1, 13, 135, 135.3, etc bleiben so bestehen. Danach soll es aber möglich etwas in dieser Form anzuhängen:

- 1 - Haumichblau
- 12 - nochmalbeschreib

Die würde mein Bästelchen zerhauen. Ich muss es schaffen, dass nur die Zahl am Anfang relevant für den move ist.

Gruß, Chris
Bitte warten ..
Mitglied: chris-koehne
26.08.2005 um 11:30 Uhr
Oh, ich sehe gerade, dass meine Einrückungen der Verzeichnisse nicht angenommen wurden. Es sieht so aus:
- 1
12
13
131
135
135.3
135.31
135.33
135.336

Hi Frank,

habs mir schon gedacht, dass das mit dem *
so nicht klappt. Nochmal ein wenig
detailierter mein Problem.

Es gibt folgende (nicht durch mich
festgelegte) Ordnerstruktur:

- 1
- 12
- 13
- 131
- 135
- 135.3
- 135.31
- 135.33
- 135.336

Im Input Verzeichnis liegt nun eine Datei
mit dem Namen 135336.pdf. Diese soll per
Batch in den Ordner \..\135.336 verschoben
werden, das klappt auch soweit alles schon
ganz gut.
Jetzt kommts aber: Irgendwann einmal
(wahrscheinlich morgen ) wünscht
man sich die Odnernamen etwas
aussagekräftiger benennen zu
können. Der Anfang, also 1, 13, 135,
135.3, etc bleiben so bestehen. Danach soll
es aber möglich etwas in dieser Form
anzuhängen:

- 1 - Haumichblau
- 12 - nochmalbeschreib

Die würde mein Bästelchen
zerhauen. Ich muss es schaffen, dass nur die
Zahl am Anfang relevant für den move
ist.

Gruß, Chris
Bitte warten ..
Mitglied: Biber
26.08.2005 um 12:37 Uhr
Moin, chris,
Rückfrage:
Hab ich das richtig verstanden, dass
a) bei der bestehenden Ordnerstruktur gelten soll: Verschiebe die Dateien, deren Namen mit den vorhandenen Dateinamen korrespondieren dorthin ("1.pdf" -> Dir "1 blubbblubb"; "123456.pdf" ->Dir "123.456 sülzdibülz" ) ? Dann kann es ja immer nur genau eine Datei dort geben??? Falls vorhanden, überschreiben??
b) falls eine Datei gefunden wird, die den formalen Konventionen entspricht ("nnnnnnn.pdf"), soll....?? Ordner angelegt werden?? Beispiel Datei 345678.pdf? Neuer Ordner "345.678"??
Die Denke Deiner Anwender mutet mich etwas strange an. *anmerk
Bitte warten ..
Mitglied: chris-koehne
26.08.2005 um 15:56 Uhr
Hi Biber,

du hast recht, ziemlich schräges Ablagesystem. Dies gibt es so aber schon seit etwa 15 Jahren und es gibt eine 300-seitige Doku dazu

Du hast es richtig verstanden. Eine Date namens 1234.pdf läuft in das Verzeichnis input. Durch mein Bästelchen wird der Dateiname jetzt zerlegt in
1, 12, 123, 123.4 (dies ist dann die rdnerstruktur, wenn ich nur die Backslashe dabei packe).
Die Datei wird nun in den Ordner
-1
-|-12
----|-123
---------|123.4
verschoben und heißt danach dann 20050826_123.4.pdf

Kommt jetzt eine zweite Datei (am gleichen Tag) namens 1234.pdf im Input Ordner an wird wieder gerupft und die Datei landet im gleichen Ordner, nur mit dem Namen
20050826_123.4_153326.pdf (Timestamp angehangen)

Falls ein Ordner nicht existiert wird dieser automatisch - zwar an anderer Stelle (Unterordner NEU) - angelegt und die Datei dann dorthin verschoben.

Alles arbeitet soweit ganz gut, nur die Sache mit den sich änderden Ordnernamen ist so 'ne Sache.

In Zukunft soll die Datei 1234.pdf dann verschoben werden in

-"1 - Ordnername"
-|-"12 - haumichblau"
----|-"123 - weißnixmehr"
---------|"123.4 - geschafft"
und heißt danach dann 20050826_123.4.pdf

Das Bätschelein soll heute so gebastelt werden, dass im alles hinter dem Ordneridentifier (1, 12, 123, 123.4, etc.) egal ist.

Gruß, Chris
Bitte warten ..
Mitglied: Biber
26.08.2005 um 16:16 Uhr

*LAAAAAAAAAAAAACCCCHHT*

@chris
Du hast aber echt eine tolle Karte gezogen mit Deinen Usern...

Da brauch ich erst ein Becks, bevor ich etwas bastele. Ich setz mich mal heute abend dran.
Vielleicht auch erst nach zwei Bier...*kopfschüttel*

Gab es viele Bewerber für Deinen Job?
Mitfühlend
Frank / der Biber aus Bremen
Bitte warten ..
Mitglied: chris-koehne
26.08.2005 um 16:54 Uhr
Biber,

danke für dein Mitgefühl ! Du hast rechr, wer sich das ausgedacht hat gehört bestraft, aber ...

Nun ja, wenn dir etwas einfällt wäre das super!

Danke, Chris
Bitte warten ..
Mitglied: Biber
26.08.2005 um 16:55 Uhr
uuups, chris,
hab ich vor lauter Tränen lachen ganz übersehen:
>Alles arbeitet soweit ganz gut, nur die Sache mit den sich änderden Ordnernamen ist so 'ne Sache.
Dann gibt es schon ein Grundgerüst? Oder ist der Stand der Dinge die 6 Zeilen oben?
Und der Batch soll als Task laufen und immer loslaufen, wenn er in dem Inputordner *.pdf-Dateien vorfindet?
Löst das weitere Aktionen aus (Info-Mail an User, Umbenenn-und Verschiebe-Protokoll)?
Biber
Bitte warten ..
Mitglied: Biber
11.09.2005 um 05:19 Uhr
So, chris
Du hast Dich ja etwas länger nicht gemeldet, daher gehe ich davon aus, dass Du schon eine Lösung gefunden hast
für Dein PDF-in-Ablage-Ordner-Problemchen. Ich hab trotzdem nochmal eine Batchlösung dafür zusammengeschreddert.
(Ist leider kein Oneliner geworden )

--------Snipp --Pdf2AblageTestet.bat------
01.
@echo off & setlocal EnableDelayedExpansion & setlocal
02.
<b>SET "meininputdir=d:\temp2"   & REM  .. bei chris: set meinroot=c:\input
03.
SET "ablageroot=L:"           & REM bei chris: set copyroot=c:\ablage</b>
04.
SET LogFile="%temp%\%~n0.log"
05.
PUSHD %ablageroot%\
06.
IF NOT EXIST "%ablageroot%\NEU" MD "%ablageroot%\NEU"
07.
FOR /f %%i IN ('dir /b %meininputdir%\*.pdf') DO CALL :loop %%i
08.
POPD & GOTO :eof
09.
-------Ende Hauptteil - End of Batch
10.
:loop
11.
If [%ExitLoop%]==[YES] set "ExitLoop=NO" & goto:eof
12.
SET "PDFFileName=%1"
13.
:Formalcheck Nur-PDFs-mit-Ziffern-erlauben
14.
for %%a in (1 2 3 4 5 6 7 8 9) do if [%PDFFileName:~0,1%]==[%%a] goto :FormalCheckOk
15.
echo Datei %1 entspricht nicht den Konventionen der Ablage. >>%LogFile%
16.
echo Keine Verarbeitung von %1.>>%LogFile%
17.
goto :eof 
18.
-- Ende Formalcheck Nur-PDFs-mit-Ziffern-erlauben-Block siehe >>> Anmerkung unten
19.
:FormalCheckOk
20.
(SET    "subdir=%ablageroot%") & Set /a "len=1" 
21.

22.
:repeatGetLongDirname
23.
set ThisKnotpart=!PDFFileName:~0,%len%!
24.
If %len% GTR 3 set "ThisKnotPart=!ThisKnotPart:~0,3!.!ThisKnotPart:~3!"
25.
If exist "%subdir%\%thisknotpart%" (
26.
  set "Thisknot=%thisknotpart%"
27.
) ELSE (  
28.
  FOR /F "tokens=*" %%a in ('dir /b "%subdir%\%thisknotpart% *" 2^>nul') do set "thisknot=%%a"
29.
  IF Errorlevel 1 ( 
30.
    Echo Kein passendes Verzeichnis gefunden! Kopiere in "%ablageroot%\NEU" >>%LogFile%
31.
    (CALL :CopyWithRename %1 "%ablageroot%\NEU") & goto :eof 
32.
  )
33.
)
34.
SET "subdir=%subdir%\%Thisknot%"
35.
If %thisknotpart:.=% LSS %~n1 (Set /a len=%len%+1) & goto repeatGetLongDirname 
36.
ECHO Richtiges Verzeichnis fuer %1 gefunden: [%subdir%] ... wird jetzt kopiert >>%LogFile%
37.
(call :CopyWithRename %1 "%subdir%" ) & goto :eof
38.
--------
39.

40.
:CopyWithRename
41.
Set "DatePrefix=%date%" & Set "TimeSuffix=%time%"  & REM Namenserweiterungen für die zu kopierende Datei 
42.
FOR /F"tokens=2" %%i in ("%datePrefix%") do Set DatePrefix=%%i
43.
FOR /F"tokens=1-3 delims=." %%i in ("%datePrefix%") do Set Dateprefix=%%k%%j%%i
44.
FOR /F "tokens=1-3 delims=:," %%i in ("%time%") do Set "TimeSuffix=%%i%%j%%k"
45.
Set "TimeSuffix=%TimeSuffix: =0%"
46.
If NOT exist "%~2\%1" (
47.
   FOR %%a in (echo copy) do %%a %1 "%~2\%1" >>%LogFile%
48.
) ELSE (
49.
   if NOT exist "%~2\%DatePrefix%_%~nx1" (
50.
      FOR %%a in (echo copy) do %%a %1 "%~2\%DatePrefix%_%~nx1" >>%LogFile%
51.
   ) ELSE (
52.
     FOR %%a in (echo copy) do %%a %1 "%~2\%DatePrefix%_%~n1_%TimeSuffix%%~x1" >>%LogFile%
53.
   ))
54.
(Set "ExitLoop=Yes" ) & goto :eof
55.
--------
56.
>>> Anmerkung zum Formalcheck Nur-PDFs-mit-Ziffern-erlauben 
57.
Ok, der Formal-Check war nicht gefordert, aber wuerde ich schon machen.
58.
Ich habe beschlossen, das erste Zeichen des *.pdf-Namens muss eine Ziffer zw. 1 und 9 sein.
59.
Vielleicht MUSS es ja sogar eine "1" sein? Dann ginge natuerlich oben auch ein ('dir /b %meinroot%\1*.pdf').
60.
Aber dann kaeme keine Warnmeldung.
61.
<<<< Ende Anmerkung
62.
--------snapp Pdf2AblageTestet.bat-------------
Probiers aus.
Meine Testumgebung war diese Verzeichnisstruktur ("L:\" entspricht Deinem "\Ablage")

Da gibt es die z.B. die Struktur 1\12\123\123.4 (jeweils mit oder ohne textliche Ergänzung).

01.
L:\1 kategorie\12
02.
L:\1 kategorie\14
03.
L:\1 kategorie\13 Dreizehner
04.
L:\1 kategorie\12\121
05.
L:\1 kategorie\12\122
06.
L:\1 kategorie\12\123 Hunnertund23
07.
<b>L:\1 kategorie\12\123 Hunnertund23\123.4 erstes Ziel</b>
08.
L:\1 kategorie\13 Dreizehner\131
09.
L:\1 kategorie\13 Dreizehner\132
10.
L:\1 kategorie\13 Dreizehner\134
11.
L:\1 kategorie\13 Dreizehner\135 Hundert135er
12.
L:\1 kategorie\13 Dreizehner\135 Hundert135er\135.3 Hundert135erPunkt3
13.
L:\1 kategorie\13 Dreizehner\135 Hundert135er\135.3 Hundert135erPunkt3\135.33 135.3 Hundert135erPunkt3
14.
L:\1 kategorie\13 Dreizehner\135 Hundert135er\135.3 Hundert135erPunkt3\135.33 135.3 Hundert135erPunkt3\135.225
15.
<b>L:\1 kategorie\13 Dreizehner\135 Hundert135er\135.3 Hundert135erPunkt3\135.33 135.3 Hundert135erPunkt3\135.334 Zweites Ziel</b>
In diese Struktur werden die 3 Test-Pdfs kopiert
01.
<b>1234.pdf</b> --> Ziel: soll in Ablage 1\12\123\123.4 bzw. <b>"1 kategorie\12\123 Hunnertund23\123.4 erstes Ziel"</b>
02.
<b>135334.pdf</b> -> Ziel: 1\13\135\135.3\135.33\135.334 
03.
bzw <b>"L:\1 kategorie\13 Dreizehner\135 Hundert135er\135.3 Hundert135erPunkt3\135.33 135.3 Hundert135erPunkt3\135.334 Zweites Ziel"</b>
04.
<b>solaris80.20.pdf</b>  --> entspricht nicht den Konventionen - Wird nicht kopiert
Ein Mini-Logfile wird geschrieben ins %temp%-Verzeichnis.

Inhalt:
01.
>type %temp%\pdf2AblageTestet.log
02.
...
03.
1234.pdf "L:\1 kategorie\12\123 Hunnertund23\123.4 erstes Ziel\20050911_1234_042629.pdf"
04.
        1 Datei(en) kopiert.
05.
135334.pdf "L:\1 kategorie\13 Dreizehner\135 Hundert135er\135.3 Hundert135erPunkt3\135.33 135.3 Hundert135erPunkt3\135.334 Zweites Ziel\20050911_135334_042630.pdf"
06.
        1 Datei(en) kopiert.
07.
Richtiges Verzeichnis fuer 1234.pdf gefunden: [L:\1 kategorie\12\123 Hunnertund23\123.4 erstes Ziel] ... wird jetzt kopiert
08.
1234.pdf "L:\1 kategorie\12\123 Hunnertund23\123.4 erstes Ziel\20050911_1234_042713.pdf"
09.
        1 Datei(en) kopiert.
10.
Richtiges Verzeichnis fuer 135334.pdf gefunden: [L:\1 kategorie\13 Dreizehner\135 Hundert135er\135.3 Hundert135erPunkt3\135.33 135.3 Hundert135erPunkt3\135.334 Zweites Ziel] ... wird jetzt kopiert
11.
135334.pdf "L:\1 kategorie\13 Dreizehner\135 Hundert135er\135.3 Hundert135erPunkt3\135.33 135.3 Hundert135erPunkt3\135.334 Zweites Ziel\20050911_135334_042714.pdf"
12.
        1 Datei(en) kopiert.
13.
Datei solaris80.20.pdf entspricht nicht den Konventionen der Ablage.
14.
Keine Verarbeitung von solaris80.20.pdf.
15.
..
Sollte Deinen Anforderungen entsprechen, wenn ich die richtig verstanden habe:
>In Zukunft soll die Datei 1234.pdf dann verschoben werden in
-"1 - Ordnername"
-|-"12 - haumichblau"
----|-"123 - weißnixmehr"
---------|"123.4 - geschafft"
und heißt danach dann 20050826_123.4.pdf


Sach mal Bescheid, ob es passt.

Frank / der Biber aus Bremen
[Edit] Was der Batch-Skizze oben noch fehlt, ist natürlich das Löschen/Verschieben der abgearbeiten *.PDF-Dateien.
Dazu muss noch in den CopyWithRename-Block eine neue vorletzte Zeile rein (vor dem (Set ExitLoop...),
die da sinngemäß del %1 heißt. Sollte kein Problem darstellen. [/Edit]
Bitte warten ..
Ähnliche Inhalte
Hosting & Housing
Dyndns.org wildcard
Frage von mahala60Hosting & Housing

ich habe eine Domain bei dyndns.org mit dieser domain kann ich auf einen bestimmten rechner, was auch funktioniert. bei ...

Firewall
PfSense Wildcard FQDN
Frage von Spirit-of-EliFirewall10 Kommentare

Moin zusammen, sehe ich es nur nicht oder kann die Sense tatsächlich keine Wildcard FQDNs Bsp. in nem Alias ...

Verschlüsselung & Zertifikate
SSL-Webserver-Wildcard-Zertifikate
Frage von OlliPWSVerschlüsselung & Zertifikate5 Kommentare

Moin, wer kann mir SSL-Webserver-Wildcard-Zertifikate bisschen erklären? wir haben eine Domain draußen bei einem Dienstleister registiert. mustermax.org Jetzt haben ...

Verschlüsselung & Zertifikate
SSl Wildcard incl Exchange
gelöst Frage von theoberlinVerschlüsselung & Zertifikate2 Kommentare

Hallo zusammen, wir haben vor 2 Jahren nen Wildcard SSL Zertifikat bei StartSSL gekauft. Nun sind die ja nicht ...

Neue Wissensbeiträge
Windows 10

Windows 10 kann XPS erzeugen aber nicht anzeigen ????

Erfahrungsbericht von Deepsys vor 1 TagWindows 101 Kommentar

Heute schickt mir ein Kollegen eine E-Mail mit einer XPS-Datei vom Kunden im Anhang und fragt wie er diese ...

Exchange Server

1und1 IONOS: Probleme beim Mailversand mit Exchange

Information von reksierp vor 1 TagExchange Server3 Kommentare

Hallo, seit Do, 17.1.19 etwa Mittags nimmt 1und1 IONOS keine Mails mehr über den Standard-Port SMTP 25 an. Nachdem ...

LAN, WAN, Wireless

Cisco Mikrotik VPN Standort Vernetzung mit dynamischem Routing

Anleitung von aqui vor 2 TagenLAN, WAN, Wireless

1. Allgemeine Einleitung Das nachfolgende Tutorial ist eine Fortführung der hier bei Administrator.de schon bestehenden VPN Tutorials und beschreibt ...

Windows Mobile

Support für Windows Mobile endet im Dezember 2019

Information von transocean vor 3 TagenWindows Mobile1 Kommentar

Moin, Microsoft empfiehlt als Alternative den Umstieg auf iOS oder Android, wie man hier lesen kann. Gruß Uwe

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Wo lässt sich das Gateway in der FRITZ!Box 7360 einstellen?
gelöst Frage von OssabowLAN, WAN, Wireless18 Kommentare

Hallo all, nach gründlicher Suche scheine ich der einzige zu sein der das Problem hat (macht micht schon mal ...

Windows Server
Sicherung Domain Controller
gelöst Frage von Monto1Windows Server16 Kommentare

Hallo zusammen, wie sichert Ihr den Domain Controller? Selbst, wenn zwei parallel laufen, ist eine Sicherung doch mal nützlich. ...

Windows Server
MSSQL Backup in Form von .sql einspielen
Frage von janosch12Windows Server15 Kommentare

Guten Morgen, wir verwenden das Tool SQLandFTPBackup ( ) zum sichern einiger MSSQL Datenbanken. Nun sichert das Toll die ...

Microsoft Office
Office 2016 oder Office 2019
Frage von PeterzMicrosoft Office13 Kommentare

Hallo zusammen, wir müssen unser Office von 2010 auf eine neuere Version Umstellen. Jetzt stellt sich die Frage, ob ...