com1992

Unterschiedliche Dateinamen in einem Ordner in verschiedene Variablen schreiben

Hallo zusammen,

vielleicht kann mir einer bei einer einfachen Batch (kein PowerShell) Programmierung helfen.

Ich habe in einem Ordner bis zu 3 Dateien.
Diese 3 Dateinamen sollen mit einer Batch abgefragt werden. Jeder Dateiname soll dann in eine eigene Variable geschrieben werden. ( mon1,mon2,mon3 )

Von da aus komme ich dann weiter.
Kann mir da vielleicht einer aus dieser Gruppe helfen?

Hier einmal mein bisheriger Code
https://pastebin.com/zuuM54aw

Ich habe versucht eine Variable namens Counter zu erstellen und er soll diese in der For Schleife hochzählen.
Die Idee war dann jeden Dateinamen in eine dynamische Variable zu schreiben (mon%Counter%) .

Ziel ist es die Dateinamen ( max sind es 3 Stück mit variablen Namen) in einzelne Variablen zu schreiben.

Vielen Dank für die Hilfe
screenshot
screenshot1
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 426319

Url: https://administrator.de/forum/unterschiedliche-dateinamen-in-einem-ordner-in-verschiedene-variablen-schreiben-426319.html

Ausgedruckt am: 03.05.2025 um 02:05 Uhr

Penny.Cilin
Penny.Cilin 08.03.2019 um 13:01:33 Uhr
Goto Top
Hallo,

1. was ist hypershell?
2. Poste Deinen Code direkt im Forum und nutze Codetags. Du findest diese links neben dem Editorfenster, vorletztes Symbol von unten.

Und hast Du mal die Forumssuche bemüht?
Dateinamen feststellen

Gruss Penny.
com1992
com1992 08.03.2019 um 13:07:05 Uhr
Goto Top
1. Sorry meinte PowerShell

2..
@echo off

set COUNTER=0




mkdir c:\Daten\Erkennung\
mkdir c:\Daten\Erkennung\Monitore\





For /F %%i in ('dir /B C:\Daten\Erkennung\Monitore\*.*') do ( set mon%COUNTER%=%%~ni & set /A COUNTER=COUNTER+1)  

@echo on

echo %COUNTER% Monitore gefunden

echo %mon0%
echo %mon1%
echo %mon2%

pause
77559
Lösung 77559 08.03.2019 um 17:15:22 Uhr
Goto Top
Deine Enter Taste scheint zu klemmen face-wink

Wenn dein Dir Befehl etwas ausgeben soll, dann müssen die Verzeichnisse schon existieren, warum also nochmal erzeugen (wenn schon, dann mit angehägtem 2>NUL zum unterdrücken von Fehlermeldungen.

Außerdem erzeugt md/mkdir zwischenliegende Verzecihnisse in einem Schritt, also ist nur der 2.te Befehl nötig.

Wenn in einem (code block) Variablen gesetzt und ausgegeben werden brauchst du DelayedExpansion und die Variablen Namen mit ! statt %.

@echo off
setlocal EnableDelayedExpansion

set COUNTER=0

mkdir c:\Daten\Erkennung\Monitore\ 2>NUL

For /F "delims=" %%i in ('  
  dir /B C:\Daten\Erkennung\Monitore\*.* 2^>Nul
') do (  
    set "mon!COUNTER!=%%~ni"  
    set /A COUNTER+=1
)

echo %COUNTER% Monitore gefunden
set mon
pause

Gruß
LotPings