Discussione:
rinominare FILE
(troppo vecchio per rispondere)
Mirco75
2007-06-27 16:22:35 UTC
Permalink
ciao

ho un problema con il rename di una lista di file da rinominare.
In una cartella ho TOT file così chiamati:


B005148_00072320070620050039
B005148_00128320070627045956
B005149_00082420070621175947
B005151_00084120070621175947

ho bisogno di rinominarli nel seguente modo:

B148000723 (posizione 1, 5, 6, 7, 9, 10, 11, 12, 13, 14)
B148001283
B149000824
B151000841

so quali sono i comandi per rinominare e aggiungere dei caratteri al
nome, ma per toglierli non ne ho idea.

grazie a tutti (soprattutto a chiunque riesca ad aiutarmi :-) )
Franz_aRTiglio
2007-06-28 09:07:38 UTC
Permalink
Post by Mirco75
ho un problema con il rename di una lista di file da rinominare.
B005148_00072320070620050039
B148000723 (posizione 1, 5, 6, 7, 9, 10, 11, 12, 13, 14)
Da DOS puro non e' possibile, che io sappia non e' nemmeno fattibile
dal dos avanzato di NT/2000/XP, pero' si puo' fare con uno script
in VBS:


Set objFSO = CreateObject("Scripting.FileSystemObject")
Set f = objFSO.GetFolder(".")
Dim NuovoNome

For Each file In f.Files
if len(File.Name) = 28 then
NuovoNome = left(File.Name,1)
NuovoNome = NuovoNome & mid (File.Name,5,3)
NuovoNome = NuovoNome & mid (File.Name,9,6)
objFSO.MoveFile File.Name , NuovoNome
end if
Next


copiaincolla in notepad, salva con estensione .VBS (TUTTI I FILE)
poi mettilo nella cartella dove ci sono i file da rinominare ed eseguilo.

processera' SOLO i file con nome uguale a 28 caratteri, per evitare
problemi comunque ti consiglio di fare una copia di alcuni file in una
cartella di prova e fare una verifica.
Ammammata
2007-06-28 10:23:18 UTC
Permalink
Post by Franz_aRTiglio
Da DOS puro non e' possibile, che io sappia non e' nemmeno fattibile
dal dos avanzato di NT/2000/XP
stavo pensando al comando SET ma penso anche che la tua soluzione sia più
bella (semprechè certi antivirus che so io lascino eseguire ilcodice VBS)
;)
--
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
Franz_aRTiglio
2007-06-28 11:09:41 UTC
Permalink
Post by Ammammata
Post by Franz_aRTiglio
Da DOS puro non e' possibile, che io sappia non e' nemmeno fattibile
dal dos avanzato di NT/2000/XP
stavo pensando al comando SET ma penso anche che la tua soluzione sia
più bella (semprechè certi antivirus che so io lascino eseguire
ilcodice VBS) ;)
yep... nel peggiore dei casi il problema si aggira con cscript nomefile.vbs
Mirco75
2007-06-28 14:24:57 UTC
Permalink
grazie

sembra che ho risolto creando questo file batch (copiando un po' qua e
un po' là):



@echo off
setlocal enabledelayedexpansion

for %%i in (B005*.) do (
set F=%%i
set A=!F:~4,-21%!
set B=!F:~8,-14%!
ren "!F!" "B!A!!B!"
)

:end

ho fatto qualche prova e sembra tutto ok, comunque continuerò a
testarlo.

grazie comunque a tutti
Franz_aRTiglio
2007-06-28 14:41:25 UTC
Permalink
Post by Mirco75
sembra che ho risolto creando questo file batch (copiando un po' qua e
@echo off
setlocal enabledelayedexpansion
for %%i in (B005*.) do (
set F=%%i
set A=!F:~4,-21%!
set B=!F:~8,-14%!
ren "!F!" "B!A!!B!"
)
:end
ho fatto qualche prova e sembra tutto ok, comunque continuerò a
testarlo.
Ah cazzo... m'ero scordato di quel parametro :P

grazie a te per aver postato la soluzione .
Mirco75
2007-06-29 08:19:55 UTC
Permalink
di nulla...


...ma mi spieghi quel parametro a cosa serve???
grazie
Franz aRTiglio
2007-06-29 12:36:13 UTC
Permalink
Post by Mirco75
di nulla...
...ma mi spieghi quel parametro a cosa serve???
grazie
Ti riferisci al =!F:~ o al setlocal ?

btw, il =!F:~ estrae porzioni della stringa, il
setlocal serve a gestire le variabili; normalmente i file batch
si "passano" le variabili, costringendo chi "costruisce" il file
batch a prevedere tutte le variabili con un nome univoco; diversamente
il setlocal consente di usare (ad esempio) la variabile "pippo"
in 2 diversi file che si chiamano tra loro ma in ognuno dei due
"pippo" potra' avere un valore diverso.

Questo consente a file batch complessi e strutturati in piu'
"pezzi" di potersi chiamare vicendevolmente senza che le variabili
interne vengano "mischiate".

Loading...