Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

BATCH für Dateipfad mit Separator

Frage Entwicklung Batch & Shell

Mitglied: PeterS71

PeterS71 (Level 1) - Jetzt verbinden

12.01.2010, aktualisiert 14.01.2010, 3593 Aufrufe, 5 Kommentare

Hallo,

ich leider keine Erfahrung in der Batch - Programierung, benötige aber ein kleines Batch.

Ich benötige eine Batch - Datei mit der ich Dateipfade nicht unterereinander sodern hintereinander in eine Textdatei geschrieben werden.
Als Separator zwischen den Pfaden muss ein I stehen.

Mit einer einfachen Anweisung wie DIR /a /s >test.txt komme ich nich weiter.

Danke
Peter
Mitglied: TsukiSan
12.01.2010 um 13:22 Uhr
mit
01.
echo was auch immer >test.txt
hast du recht. da wird dir die ganze "test.txt"-datei ständig überschrieben.

um wieviele Dateipfade pro Zeile handelt es sich schließlich? Und muss es Batch sein?

Gruß
Tsuki
Bitte warten ..
Mitglied: PeterS71
12.01.2010 um 13:36 Uhr
Hallo,

danke für die schnelle Antwort.
Es werden sicher nicht mehr als 50 Dateipfade.
Ein Überschreiben der ausgangsdatei ist Okay.
Ich will die TXT datei in eine andere Batch einbinden,
ich benötige diese als Inpunt für eine weitere Software und diese wir über eine Batch gesteuert.
Es ist also günstig wenn die txt auch über eine Batch-Datei erzeut wird, so kann ich mehere ineinander "schachteln".

Gruß
Peter
Bitte warten ..
Mitglied: Biber
12.01.2010 um 14:06 Uhr
Moin PeterS71,

wenn ich dich richtig verstehe, dann holst du diese Ordnerliste mit dem DIR-Befehl nach der Mimik "alles unterhalb eines Startordners"?

eine mögliche Entsprechung im Batch wäre eine FOR /F-Anweisung auf genau dieses "DIR /s /a:d startverzeichnis";
eine Alternative eine wäre eine FOR /R /D-Anweisung.

Skizze (ungetestet)
01.
@echo off & setlocal 
02.
 
03.
FOR /R "x:\startdir" /D %%i in (*) do Call :AddThis "%%i;" 
04.
REM wenn das FOR-gelumpe fertig ist, dann sieht %thelongLine% so aus: 
05.
REM thelongLine=x:\startdir\pfad1;x:\startdir\pfad1\subpathX;...... 
06.
REM und da will ich alle Semikolon durch das pipe-Symbol ersetzen 
07.
set "thelongline=%thelongline:;=^|%" 
08.
REM mit Caret maskiert nur, weil ich gleich ECHOen will - wäre sonst nicht nötig. 
09.
echo %thelongline%>neueTextdatei.txt 
10.
 
11.
:: Ende des Haupt-Batches 
12.
goto :eof 
13.
~~~~~~ 
14.
:AddThis Parameter1 ist ein Lw/Pfad in Anführungszeichen 
15.
Set theLongline=%theLongline%%~1 
16.
goto :eof
Grüße
Biber
Bitte warten ..
Mitglied: PeterS71
14.01.2010 um 08:29 Uhr
Moin Biber

dein Batch geht gut zum erzeugen einer Textdatei. Ich habe nun versucht die Variabele %thelongLine% in meinem Batch zu nutzen. Ich mach aber eine Fehler. Siehst du diesen.
Der Inhalt der Variablen "%Gemarkung% und %Flurstueck% (hier stehen die Dateipfade drin) soll -input zugewiesen werden.

01.
@ECHO OFF  
02.
 
03.
FOR /R "U:\_Daten\PSW\Lageplaene\Projekte\wb_bleiloch\ALK\alk_2009" /D %%i in (*) do Call :AddThis "%%i;" 
04.
REM wenn das FOR-gelumpe fertig ist, dann sieht %Gemarkung% so aus: 
05.
REM thelongLine=x:\startdir\pfad1;x:\startdir\pfad1\subpathX;...... 
06.
REM und da will ich alle Semikolon durch das pipe-Symbol ersetzen 
07.
set "Gemarkung=%Gemarkung:;=^\ALK_1*.shp;%" 
08.
set "Gemarkung=%Gemarkung:;=^|%" 
09.
REM mit Caret maskiert nur, weil ich gleich ECHOen will - wäre sonst nicht nötig. 
10.
 
11.
 
12.
:: Ende des Haupt-batches 
13.
goto :eof 
14.
~~~~~~ 
15.
:AddThis Parameter1 ist ein Lw/Pfad in Anführungszeichen 
16.
Set Gemarkung=%Gemarkung%%~1 
17.
goto :eof 
18.
 
19.
 
20.
 
21.
FOR /R "U:\_Daten\PSW\Lageplaene\Projekte\wb_bleiloch\ALK\alk_2009" /D %%i in (*) do Call :AddThis "%%i;" 
22.
REM wenn das FOR-gelumpe fertig ist, dann sieht %Flurstuecke% so aus: 
23.
REM thelongLine=x:\startdir\pfad1;x:\startdir\pfad1\subpathX;...... 
24.
REM und da will ich alle Semikolon durch das pipe-Symbol ersetzen 
25.
set "Flurstuecke=%Flurstuecke:;=^\ALK_2*.shp;%" 
26.
set "Flurstuecke=%Flurstuecke:;=^|%" 
27.
REM mit Caret maskiert nur, weil ich gleich ECHOen will - wäre sonst nicht nötig. 
28.
echo %thelongline%>verzeichnisse_alk.txt 
29.
 
30.
:: Ende des Haupt-batches 
31.
goto :eof 
32.
~~~~~~ 
33.
:AddThis Parameter1 ist ein Lw/Pfad in Anführungszeichen 
34.
Set Flurstuecke=%Flurstuecke%%~1 
35.
goto :eof 
36.
 
37.
 
38.
 
39.
REM Batch file training Bentley Geo Web Publisher 
40.
 
41.
ECHO -------------------------------------------------------------------------  
42.
ECHO Convert Whistler DGN files to IDPR files:12.07.2007 
43.
ECHO -------------------------------------------------------------------------  
44.
 
45.
 
46.
REM ------------------------------------------------------------------------- 
47.
REM Set up variables 
48.
REM -------------------------------------------------------------------------  
49.
SET GWPINSTALLPATH=C:\BentleyGWP\GeoWebPublisher\ 
50.
SET OUTPUTPATH=Z:\Stausee_Blei\Vektor\iDPR\Stausee_Blei 
51.
SET PROJECTPATHS=U:\_Daten\PSW\Lageplaene\Einstellungen\Workspace\Seed\MicroStation\Lageplan.dgn 
52.
REM -------------------------------------------------------------------------  
53.
 
54.
 
55.
 
56.
ECHO #-------------------------------------------------------------------------  
57.
ECHO # 1. Create Gemarkung.idpr 
58.
%GWPINSTALLPATH%iDPRcnv.exe -type=DGN -input="%Gemarkung%" -seed="%PROJECTPATHS%" -output="%OUTPUTPATH%-Gemarkung.idpr" -level=Lika_Gemark,Text_Lika_Gemark -trace >Gemarkung.txt -wu=untitled 
59.
ECHO # 3. Create Flurstuecke.idpr 
60.
%GWPINSTALLPATH%iDPRcnv.exe -type=DGN -input="%Flurstuecke%" -seed="%PROJECTPATHS%" -output="%OUTPUTPATH%-Flurstuecke.idpr" -level=Lika,Text_Lika,Lika_Grenzzeichen,Lika_Flur,Lika_Gemark -trace >Flurstuecke.txt -wu=untitled 
61.
 
62.
pause
Bitte warten ..
Mitglied: Biber
14.01.2010 um 10:35 Uhr
Moin PeterS71,

ich habe deinen Codeschnipsel mal in Codetags gesetzt, damit ich wenigstens die gemeinte Zeilennummer angeben kann.

Was ich mit bloßem Auge sehe ist:
  • Ergänze in Zeile 1 nach "@echo off" noch ein " & setlocal" [alle im Batch verwendeten Variablen werden NUR dort verwendet]
  • Zeile 28 benutzt die falsche Variable %theLongline%
  • es existiert 2x ein "Call-Block" AddThis... 1x ab Zeile 15 (der wird benutzt) ; 1x ab Zeile 33 (der wird nie benutzt)
  • alles, was nun tatsächlich zum Hauptablauf des Batches gehört (z.B. die zweite FOR-Anweisung "Flurstücke" sollte natürlich auch vor die jetzige Zeile 12 "Ende des Hauptbatches"

Bitte versuche es mit diesen Tipps (erstmal) allein, ein paar Klemmer rauszunehmen.
Den verbleibenden Rest machen wir dann gerne gemeinsam.

Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Dateipfad ausgeben (2)

Frage von tegwert zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch : alle Dateien eines Ordners bearbeiten (1)

Frage von deguonkel zum Thema Batch & Shell ...

Batch & Shell
gelöst Zeilenumbruch-Zeilen-Vorschub entfernen? (Batch) (9)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst Dateien aus CSV mit Batch suchen (5)

Frage von joes1609 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows Update

Novemberpatches und Nadeldrucker bereiten Kopfschmerzen

(14)

Tipp von MettGurke zum Thema Windows Update ...

Windows 10

Abhilfe für Abstürze von CDPUsersvc auf Win10 1607 und 2016 1607

(7)

Tipp von DerWoWusste zum Thema Windows 10 ...

RedHat, CentOS, Fedora

Fedora 27 ist verfügbar

Information von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
Windows Server
Kennwort vergessen bei Hyper vserver 2012r (12)

Frage von jensgebken zum Thema Windows Server ...

Linux Desktop
Bildschirmauflösung unter Linux festlegen (12)

Frage von itebob zum Thema Linux Desktop ...

Windows Userverwaltung
gelöst Administrator hat alle Rechte verloren (10)

Frage von mrdead zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
Gebäude mit WLAN ausstatten (9)

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