PDA

View Full Version : Aiuto per creazione batch file


Lele191278
13-11-2020, 12:03
Ciao a tutti, non sono esperto di batch file, chiedo a voi se qualcuno ne sa piu' di me.

Ho la una serie di file in una cartella formattati in questo modo:
a a - b b b.xxx
a a - c c c.xxx
d d d - e e.xxx
d d d - f f f.xxx
....

Avrei bisogno di una procedura batch che mi crei n cartelle che si chiamino come la prima parte del nome del file a sinistra del - e che successivamente i file vengano inseriti nelle relative cartelle
So che e' possibile farlo, ho provato a studiarmi un po il codice ma e' troppo complicato per le mie conoscenze.

Qualcuno e' in grado di scrivermi la procedura batch?

Grazie!

xelion21
13-11-2020, 18:29
@Lele191278

Spero di aver capito la tua richiesta, prova e vedi se ti va bene.

codice
-----------------------------------------------------
@echo off
cd %~dp0

if not exist %~dp0\a a - b b b md %~dp0\a a - b b b
if not exist %~dp0\a a - c c c md %~dp0\a a - c c c
if not exist %~dp0\d d d - e e md %~dp0\d d d - e e
if not exist %~dp0\d d d - f f f md %~dp0\d d d - f f f

move /y "%~dp0\a a - b b b.xxx" "%~dp0\a a - b b b"
move /y "%~dp0\a a - c c c.xxx" "%~dp0\a a - c c c"
move /y "%~dp0\d d d - e e.xxx" "%~dp0\d d d - e e"
move /y "%~dp0\d d d - f f f.xxx" "%~dp0\d d d - f f f"

exit
-------------------------------------------------------

Lele191278
13-11-2020, 22:52
Ciao e grazie per la risposta, penso di essermi espresso male, ho usato le lettere ma i nomi dei file sono i più disparati, alcuni sono anche divisi da spazi ma quello che mi interessa è quello che c è prima del - che deve essere il nome delle singole cartelle.

Grazie

x_Master_x
14-11-2020, 12:49
Come inizio da cui partire. Da qui puoi completare il codice

@ECHO OFF

SET "input=a a - b b b.xxx"

FOR /f "tokens=1,2 delims=-" %%x IN ("%input%") DO (
echo sinistra: %%x
echo destra: %%y
)
PAUSE


Facendo un ciclo FOR per cercare i file (invece della variabile statica INPUT che ho messo come esempio) e nel ciclo al posto degli ECHO metti la creazione cartella e lo spostamento del file ;)

Lele191278
15-11-2020, 20:50
Grazie x_master_x, ma sono un po imbranato in materia, sono riuscito tramite un po di test a tirar fuori questo codice

@echo off
for %%a in (*.*) do (
md "%%~na" 2>nul
move "%%a" "%%~na"
)
pause

ma il problema è che mi crea il nome delle cartelle uguale a quello del file, invece a me serve che il nome della cartella sia uguale a tutto quello che c'è a sx del - e che dentro questa cartella ci vadano a finire tutti i file con gli stessi caratteri a sx di -

Riesci adarmi qualche altro aiuto? Grazie!

Lele191278
15-11-2020, 21:40
Sono andato uno step avanti e sono riuscito a far creare le cartelle come volevo con questo codice

@ECHO OFF
for /F "tokens=1,2 delims=-" %%A in ('dir /B *.*') DO (
md "%%A" 2>nul
move "*.*" "%%A"
)
PAUSE

Ma poi mi sposta tutti i file in tutte le cartelle, invece deve spostare i singoli file nelle relative cartelle a seconda del nome (parte del file a sx del -)

:muro:

x_Master_x
16-11-2020, 00:31
Quasi. Visto che ti sei impegnato:

@ECHO OFF

FOR /F "tokens=1,2 delims=-" %%X IN ('DIR /B *.*') DO (
MD "%%X"
MOVE "%%X-%%Y" "%%X"
)
PAUSE


%%X-%%Y fa la differenza. Due token, due lettere

Struttura iniziale:

abc - prova.txt
cde - prova.txt
efg - prova.txt


Struttura finale:

abc --> abc - prova.txt
cde --> cde - prova.txt
efg --> efg - prova.txt

Lele191278
16-11-2020, 11:35
Grazie, adesso funziona perfettamente!

:D