Verzeichnis erstellen, wenn vorhanden +1
Hallo Profis,
ich frage ab ob ein Verzeichnis mit Namen "Hunde" existiert, soweit OK
Wenn da Verzeichnis existiert, möchte ich ein neues Verzeichnis erstellen z.B. Hunde-1.
Es sollte möglich sein das bis zu drei Verzeichnisse erstellt werden können.
Also Hunde-1, Hunde-2, Hunde-3
Bisher fehlt mir der Ansatz, habt ihr einen Tipp?
Besten Dank im voraus.
Gruss André
ich frage ab ob ein Verzeichnis mit Namen "Hunde" existiert, soweit OK
Wenn da Verzeichnis existiert, möchte ich ein neues Verzeichnis erstellen z.B. Hunde-1.
Es sollte möglich sein das bis zu drei Verzeichnisse erstellt werden können.
Also Hunde-1, Hunde-2, Hunde-3
Bisher fehlt mir der Ansatz, habt ihr einen Tipp?
Besten Dank im voraus.
Gruss André
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 24110067991
Url: https://administrator.de/contentid/24110067991
Ausgedruckt am: 22.11.2024 um 00:11 Uhr
18 Kommentare
Neuester Kommentar
Hi.
Shell:
Shell:
#!/bin/bash
base_folder="Hunde"
if [ -d "$base_folder" ]; then
# Base folder "Hunde" exists
counter=1
while [ -d "${base_folder}-${counter}" ]; do
((counter++))
done
new_folder="${base_folder}-${counter}"
mkdir "$new_folder"
echo "Neuer Ordner erstellt: $new_folder"
else
# Base folder doesn't exist
mkdir "$base_folder"
echo "Neuer Basismappenordner erstellt: $base_folder"
fi
Moin, geht bestimmt auch kürzer aber hier mal fix ein Beispiel mit Powershell.
# Verzeichnis "Hund" überprüfen
if (-not (Test-Path -Path "C:\temp\Hund" -PathType Container)) {
New-Item -Path "C:\temp\Hund" -ItemType Directory
}
# Überprüfen, ob "Hund-1" existiert
elseif (-not (Test-Path -Path "C:\temp\Hund-1" -PathType Container)) {
New-Item -Path "C:\temp\Hund-1" -ItemType Directory
}
# Überprüfen, ob "Hund-2" existiert
elseif (-not (Test-Path -Path "C:\temp\Hund-2" -PathType Container)) {
New-Item -Path "C:\temp\Hund-2" -ItemType Directory
}
# Überprüfen, ob "Hund-3" existiert
elseif (-not (Test-Path -Path "C:\temp\Hund-3" -PathType Container)) {
New-Item -Path "C:\temp\Hund-3" -ItemType Directory
}
else {
Write-Host "Bereits Hund, Hund-1, Hund-2 und Hund-3 erstellt."
}
Moin,
Powershell.
Ein Ansatz (wenn auch sicherlich nicht der eleganteste)
Mit dem logischen Ansatz kannst du jetzt erstmal loslaufen und uns deinen Code zur Korrektur präsentieren
Powershell.
Ein Ansatz (wenn auch sicherlich nicht der eleganteste)
- Forschleife von 0-3 durchlaufen lassen
- prüfe bei 0, ob das Verzeichnis Hund existiert (Test-Path()) wenn ja, weiter in der Schleife und mache aus Hund dann „Hund-$i“ und wieder mit Test-Path arbeiten.
- Wenn nein, Verzeichnis anlegen und Schleife beenden…
Mit dem logischen Ansatz kannst du jetzt erstmal loslaufen und uns deinen Code zur Korrektur präsentieren
$root = 'd:\ordner'
$prefix = 'Hunde'
$max = 3
$cnt = 1
$folder = "$root\$prefix"
while((Test-Path $folder) -and $cnt -le $max){
$folder = "$root\$prefix-$((++$cnt))"
}
if ($cnt -le $max){
new-item -type dir -Path $folder -force
}
tio.run
Zitat von @em-pie:
@7907292512
deine Routine läuft aber los, egal ob es das Verzeichnis
@7907292512
deine Routine läuft aber los, egal ob es das Verzeichnis
Hund
gibt oder nicht.Jepp, hatte ich kurz übersehen und es bereits nachträglich korrigiert
Zitat von @AndreL:
Hallo Sid,
der Ordner wird nicht erstellt.
Was mache ich falsch?
Hallo Sid,
der Ordner wird nicht erstellt.
Was mache ich falsch?
@echo off
set ARCHIVNAME=sicherung-%DATE%
$root = 'g:\sicherung\hundeshop\'
$prefix = '%ARCHIVNAME%\'
$max = 3
$cnt = 1
$folder = "$root\$prefix"
while((Test-Path $folder) -and $cnt -le $max){
$folder = "$root\$prefix-$((++$cnt))"
}
if ($cnt -le $max){
new-item -type dir -Path $folder -force
}
md $folder
pause
Ich bin zwar nicht sid, aber batch und powershell zu mixen, könnte schwierig werden. Wieso baust Du
set ARCHIVNAME=sicherung-%DATE%
Daran wird es relativ sicher scheitern.
Ohhhhh määän, das ist kein Batch, das ist Powershell ... 🙃
Wenns sein muss geht alles irgendwie anno tobak (das ist scheinbar wie Herpes, geht nie wieder vollständig weg 🤮)...
@echo off &setlocal enabledelayedexpansion
set "root=d:\ordner"
set "prefix=Hunde"
set max=3
set cnt=1
set "folder=%root%\%prefix%"
:loop
if not exist "!folder!" (
md "!folder!"
goto :end
) else (
if !cnt! GTR %max% goto :end
set "folder=%root%\%prefix%-!cnt!"
set /a cnt+=1
goto :loop
)
:end
pause
Hi.
keine Ahnung warum Du das ständig kaputtbaust... (und Dich nicht an die Vorlage von Sid hältst)
keine Ahnung warum Du das ständig kaputtbaust... (und Dich nicht an die Vorlage von Sid hältst)
:: https://administrator.de/forum/verzeichnis-erstellen-wenn-vorhanden-1-24110067991.html#comment-1012127919830555
:: https://administrator.de/user/siddius/
@echo off &setlocal enabledelayedexpansion
set ARCHIVNAME=sicherung-%DATE%
set "root=g:\sicherung\hundeshop"
set "prefix=%ARCHIVNAME%"
set max=3
set cnt=1
set "folder=%root%\%prefix%"
:loop
if not exist "!folder!" (
md "!folder!"
goto :end
) else (
if !cnt! GTR %max% goto :end
set "folder=%root%\%prefix%-!cnt!"
set /a cnt+=1
goto :loop
)
:end
pause
Was mich wundert, ist das bei "not exist" ein Verzeichnis erstellt werden soll.
Haja, einfache Abfrage obs den Ordner schon gibt, wenn nicht, erstelle ihn, wenn vorhanden, gehe zum Else (-x anhängen) Fall.
Tja Kopf Tischplatte, es ist Freitag, was sonst ...
Wozu definiere ich wohl Variablen im Kopf wenn die dann einfach ignoriert und wieder alle durch das falsche ersetzt werden , Koppschüttel. Du sollst nur den Inhalt der Variablen in Zeile 2 und 3 anpassen also root und prefix sonst nüscht!!! Und in root und prefix bitte Ordner ohne Backslash am Ende, genau so wie ich es in meinem Skript geschrieben habe!!
Wozu definiere ich wohl Variablen im Kopf wenn die dann einfach ignoriert und wieder alle durch das falsche ersetzt werden , Koppschüttel. Du sollst nur den Inhalt der Variablen in Zeile 2 und 3 anpassen also root und prefix sonst nüscht!!! Und in root und prefix bitte Ordner ohne Backslash am Ende, genau so wie ich es in meinem Skript geschrieben habe!!
Und in root bitte Ordner ohne Backslash am Ende, genau so wie ich es in meinem Skript geschrieben habe!!
Funktioniert aber auch mit ^^ Hab mal'n Echo zwischendurch eingebaut zum debuggen, Pfad wird vernünftig gebaut. Halb so wild. Aber grundsätzlich von der Syntax abzuweichen als Unwissender ist immer bisschen schwierig. Zumal es mich nun auch einige Minuten fürs Debugging gekostet hatte.
Ja, gehen tut das, ist aber unsauber und könnte im weiteren Verlauf der Anpassung zu Fehlern führen. Aber wat soll's die Batchies sollen ihre Matsche halt weiter bis in alle Ewigkeit kritzeln ...
I'm out. 🖖
So long
Sid.
I'm out. 🖖
So long
Sid.