PDA

Visualizza la versione completa : [BATCH] Leggere valore incrementale da file batch per rinominare file


dreeg
26-09-2012, 17:37
Salve a tutti,
scusate ma sto impazzendo.

Premessa:
- Ho un file master.doc e devo copiarlo in un altra directory con un altro nome quando eseguo un file .bat ma ogni volta deve avere alla fine del nome un numero progressivo diverso.
\cartella1\master.doc
\cartella2\file1.doc
\cartella2\file2.doc
... etc

Problema:
- Ho creato un .bat semplice che copia il mio file e lo rinomina. Non so muovermi nel dos e dovrei farlo il più semplice possibile quindi ho pensato ad una soluzione:
Scrivo un file txt con un numero e dal .bat lo leggo, salvo il valore nella variabile e sovrascrivo il file con il valore incrementato di uno (così in memoria mi tengo salvato "dove sono arrivato" con i numeri) e infine rinomino il file appena copiato con "nome file %variabile%.doc".

Come posso fare? :jam:

Per ora ho scritto questo codice:

@echo off
set /a var < c:\prova\numero_nome.txt
echo %var% > c:\prova\prova2.txt
set /a var=%var%+1
echo %var% > c:\prova\prova3.txt

ho provato anche con

set var = TYPE c:\prova\numero_nome.txt
echo %var% > c:\prova\prova2.txt
set /a var=%var%+1
echo %var% > c:\prova\prova3.txt

per provare la funzione di lettura/scrittura su file e mi sono bloccato.. ho fatto due file di prova per vedere se riuscivo a prelevare il valore, salvarlo altrove e salvarlo altrove incrementato di 1 ma non funziona.
in "prova2.txt" mi salva "ECHO Disabilitato" (oppure "ECHO Attivo" nel secondo caso) e in "prova3.txt" mi salva "1".
:messner:
Come posso prelevare il numero presente in "numero_nome.txt" e salvarlo in una variabile?

dreeg
29-09-2012, 23:57
Up :cry: nulla da fare? :confused:

c0der
30-09-2012, 01:36
Non sono sicuro di aver capito esattamente qual'è il problema
ma questo ultimo numero che vuoi salvarti non lo puoi salvare come
unico CONTENUTO del file, tipo un file ultimo.txt che contiene solo "27"
invece di lavorare sul nome del file?

dreeg
30-09-2012, 01:51
Dopo giorni di tentativi ci sono riuscito proprio ora!!

Eccone il codice:

@echo off
setlocal enabledelayedexpansion
set numero=
for /f "delims=" %%a in (numero_nome.txt) do (
set appoggio=%%a
set numero=!appoggio!
)

copy "C:\path\documento_originale.doc" "C:\path\di\destinazione"
rename "C:\path\di\destinazione\documento_copiato.docx" "Nome File %numero%.docx"

SET /a numero = %numero%+1

echo %numero% > "C:\path\da\tenere\al\sicuro\numero_nome.txt"


P.S.
@c0der:
No, io HO un file che ha come unico contenuto un numero, e da quello devo prendere quell'unico contenuto, metterlo in una variabile ed usare quel numero (finalmente in una variabile) per dare il nome ad un file. Il problema è leggere "QUELL'UNICO CONTENUTO" da un file .txt ._. non è semplice xD

c0der
30-09-2012, 01:57
tu intendevi proprio usare il contenuto del file, sono io che non ero
sicuro di aver capito, dal tuo preambolo alla domanda....

Per dire, se avessi dovuto chiedere quello che hai chiesto tu ridurrei drasticamente a:
"Vorrei assegnare a una variabile d'ambiente dos il contenuto di un file. Come si fa?"

Ciao.

dreeg
30-09-2012, 02:07
Si, ma quando si scapoccia appresso ad un codice che non si conosce sai com'è.. ho preferito mettere tutto in chiaro :D

Grazie per l'interessamento ed il tentato aiuto :zizi:

c0der
30-09-2012, 02:13
Succede tante volte, come a te adesso, che uno fa una domanda e poi si risponde da solo
prima di ricevere risposte dagli altri, forse perché si mette in una condizione di maggior
ottimismo verso la soluzione del problema e la soluzione arriva. Ciao.

dreeg
30-09-2012, 14:16
Si, esporlo a se stesso pensandolo non è come esporlo scrivendolo o parlandone.. la mente non a caso è ancora un mistero :confused:

Ma vabè, l'importante è aver risolto (anche se c'ho messo una settimana xD)

MItaly
30-09-2012, 14:31
A tal proposito...
http://hwrnmnbsol.livejournal.com/148664.html
:ciauz:

c0der
30-09-2012, 15:13
bellissimo, non lo conoscevo...

capitato tante volte che conoscenti mi telefonano perché sono "l'esperto di computer"
e mentre mi spiegano il problema al telefono davanti al computer, trovano una soluzione,
il problema sparisce e dicono: "vedi, basta parlarti, hai poteri anche a distanza..."
In realtà il potere ce l'ha la mente umana.

Sapendo di questo racconto ora gli mando una mia foto davanti al computer e gli dico,
"la prossima volta prima di chiamare fai la domanda alla foto..." :D

Oppure tante email mandate da me con "Non funziona..." e 1 minuto dopo ne mando un'altra con "Risolto..."

Loading