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
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.