truespin
Goto Top

Dateiname per Batchfile verarbeiten (batchfile für suberversion)

Hallo zusammen,

dies ist mein erster Post in diesem Forum und ich hoffe alles von Anfang an richtig zu machen, wenn nicht entschuldigt bitte meine Fehler!

Ich bin in unserer Abteilung mit der automatisierung von Subversion / TortoiseSVN beauftragt worden.
Leider kenne ich mich mit Batch programmierung nicht wirklich aus.
Für dieses Batchfile benötige ich eine abfrage wie ein Dateiname lautet, besser gesagt wie ein Teil dieses Namens lautet. Darauf wird dann entsprechen reagiert.

bsp.:

d:\... ...\L01_c02

Nun möchte ich per Batch den letzten teil des Pfads "lesen". Wenn der jetzt z.B. Lo1_c02, L01_c03 oder L02_c01 lautet muss entsprechend darauf reagiert werden. Leider weiß ich die entsprechenden Befehle für Batch nicht.

Ich hoffe mir kann schnell jemand helfen!


truespin

Content-Key: 88048

Url: https://administrator.de/contentid/88048

Printed on: April 19, 2024 at 20:04 o'clock

Mitglied: 60730
60730 May 20, 2008 at 09:20:18 (UTC)
Goto Top
Moin und willkommen im Forum,

Schnell helfen - gerne - aber vorher hab ich noch schnell eine Frage:

Was genau suchst du?
Der Pfad ist bekannt und du sucht dort nach einem "muster" wie 1234.xls oder *.xls
Member: truespin
truespin May 20, 2008 at 09:27:00 (UTC)
Goto Top
Hallo,

nein der Name ist mir nicht direkt bekannt.
Es gibt aber nur 6 - 7 bestimmte Namen, die sind also "genormt".
Das ganze soll am Schluss so ablaufen:

Das Batchfile check automatisch in Subversion einen Ordner ein und nennt den Ordner nach einer logischen Reihenfolge.
Heißt wenn der Ordner d:\... ...\L01_c01 bereits in subversion verwaltet wird und meine Batch einen eincheckten will muss sie diesen Ordner dann d:\... ...\L01_c02 nennen. Um dies zu bewerkstelligen kann ich mir alle Ordnername auf Kommandozeilenebene von Subversion holen und müsste dann eben den letzten Ordnernamen "lesen" und den entsprechenden Namen für meinen Ordner verwenden.

ich hoffe das ganze war jetzt nicht zu verwirrend....


truespin
Mitglied: 60730
60730 May 20, 2008 at 09:52:12 (UTC)
Goto Top
Ich probiers mal

if exist d:\... ...\L01_c04 >nul echo Subversion4
if exist d:\... ...\L01_c03 >nul echo Subversion3
if exist d:\... ...\L01_c02 >nul echo Subversion2
if exist d:\... ...\L01_c01 >nul echo Subversion1

Anstelle von Echo kann du natürlich auch etwas anderes steuern.
Den Teil verstehe ich nicht
Das Batchfile check automatisch in Subversion einen Ordner ein und nennt den Ordner nach einer logischen Reihenfolge.

Meinst du das Batchfile soll automatisch - oder hast du die schon????
Member: bastla
bastla May 20, 2008 at 10:02:20 (UTC)
Goto Top
Hallo truespin und willkommen im Forum!

Den Ordner mit einem definierten Namensbestandteil und der daran angefügten höchsten Nummer kann ich mir auch ohne Subversion (da Du diesen Befehl ja nicht beschrieben hast) holen, und die Fortsetzung ist dann ja ohnehin gleich:
@echo off & setlocal
set "Basis=d:\Dein Pfad"  
set "Prefix=L01_c"  
for /f "delims=" %%i in ('dir /b /on /ad "%Basis%\%Prefix%*") do set "Letzter=%%i"  

set /a Nr=1%Letzter:~-2%
set /a Nr+=1
set "Naechster=%Prefix%%Nr:~-2%  
echo Naechster Ordner: %Naechster%
Kurze Erklärung:

Durch die nach Namen sortierte Ausgabe der "passenden" (= Name beginnt mit dem angegeben Bestandteil %Prefix%) Ordner kann zunächst der letzte Ordnername gefunden werden.

Dessen letzte beiden Zeichen repräsentieren den Zähler. Da dieser (sinnvoller Weise) führende Nullen enthält, setze ich beim Auslesen gleich eine 1 davor und erhalte als (numerische Variable) %Nr% zB 102.

Nach dem Erhöhen des Variablenwertes (wäre dann also 103) können wiederum die letzten beiden Stellen als neuer Zähler entnommen werden. Zusammen mit dem ersten Namensbestandteil ergibt sich der Name des nächsten Ordners.

Grüße
bastla
Member: truespin
truespin May 26, 2008 at 11:57:34 (UTC)
Goto Top
Hallo zusammen,
dieses Problem hatt sich lösen lassen. Durch ein Subversioncommando konnte ich mir eine Liste erstellen lassen, diese druchsuche ich dann mit "find".
Nun stehe ich aber vor einem neuen Problem.
Man kann in einem Batchfile auch VB-Skripte verwenden, was ich jetzt auch brauche.
Leider weiß ich nicht wie ich eine ListBox wie in VB erstelle und den User eine Auswahl gebe. Ich habe jetzt schon einige Zeit gesucht und das einzige was ich gefunden habe war das hier: http://lab1.de/Central/Software/System-Tools/Winscript/
Leider hilft mir das nicht wirklich weiter.
Ich würde mich wieder über eure Hilfe freuen!


truespin
Member: bastla
bastla May 26, 2008 at 12:38:32 (UTC)
Goto Top
Hallo truespin!

Vorweg: Neues Thema - neuer Thread (nicht zuletzt, da hier außer uns Dreien kaum jemand mitlesen und zur Lösung beitragen dürfte) ...
Vielleicht stellst Du dann etwas konkreter (Beispieldaten helfen) Dein Vorhaben dar, wobei ich allerdings gleich hier auf einen wesentlichen Unterschied zwischen VB und VBScript hinweisen muss: letzteres hat kein eigenes Programmfenster und bietet daher nur sehr eingeschränkte GUI-Möglichkeiten.

Soferne die Auswahlliste nicht allzu lang wäre, ließe sie sich als eine Art "Menü" (mit nummerierten Optionen und Eingabe der Nummer) durch eine InputBox (notdürftig) umsetzen.

Grüße
bastla
Member: truespin
truespin May 26, 2008, updated at Oct 18, 2012 at 16:35:45 (UTC)
Goto Top
Hallo,

auf anraten von bastla habe ich einen neuen Eintrag hizugefügt.

Zu finden hier: ListBox in einer Batchdatei

truespin