Discussione:
Creare file txt da un altro file txt
(troppo vecchio per rispondere)
Fede5815
2009-11-19 16:36:10 UTC
Permalink
"stringhe txt" contiene una lista ordinata di stringhe che
variano ad ogni esecuzione del file batch.

devo creare una serie di file txt con il nome di ciscuna stringa.
per essere più chiaro, ho il file Disney.txt che contiene un elenco di
stringhe tipo Paperino Pluto ecc e vorrei creare i file Paperino.txt
Pluto.txt ecc

il file "Disney txt" e' l'output di find /i "%1" file.txt

ho già letto di un problema simile, purtroppo non ricordo dove..ho guardato
l'help di find ma non ho trovato quello che mi serviva.
ho anche pensato a un ciclo di for ma quello che scrivo non funziona...
avrei bisogno di un suggerimento..
grazie
gioacchino
2009-11-20 11:06:59 UTC
Permalink
devo creare una serie di file txt con il nome di ciscuna stringa. per
essere più chiaro, ho il file Disney.txt che contiene un elenco di
stringhe tipo Paperino Pluto ecc e vorrei creare i file Paperino.txt
Pluto.txt ecc
Avendo sed è piuttosto facile creare i file:

echo @echo off > crea.bat
cat Disney.txt | sed 's/^/copy nul /' >> crea.bat
call crea.bat
del crea.bat

verranno creati tutti file vuoti, uno per ogni riga.
Fede5815
2009-11-20 17:21:08 UTC
Permalink
Post by gioacchino
cat Disney.txt | sed 's/^/copy nul /' >> crea.bat
call crea.bat
del crea.bat
verranno creati tutti file vuoti, uno per ogni riga.
La riga con cat non funziona.
Ho copiato tutto nel file prova.bat e l'ho eseguito da riga di comando in
una finestra dos (o presunto tale) di WinXPhome.

Il risultato è il file crea.bat che contiene solo @echo off.
un msg di sistema dice "cat" non e' riconosciuto come comando interno o
esterno, un programma eseguibile o un file batch.

Si puo' risolvere?
gioacchino
2009-11-20 17:47:04 UTC
Permalink
Post by Fede5815
La riga con cat non funziona.
Ho copiato tutto nel file prova.bat e l'ho eseguito da riga di comando
in una finestra dos (o presunto tale) di WinXPhome.
sistema dice "cat" non e' riconosciuto come comando interno o esterno,
un programma eseguibile o un file batch.
Si puo' risolvere?
Si, si, mi sono sbagliato avendolo provato su linux!
Il comando in ambiente dos è type:
echo @echo off > crea.bat
type Disney.txt | sed 's/^/copy nul /' >> crea.bat
call crea.bat
del crea.bat
Fede5815
2009-11-20 18:26:25 UTC
Permalink
Post by gioacchino
Post by Fede5815
Si puo' risolvere?
Si, si, mi sono sbagliato avendolo provato su linux!
type Disney.txt | sed 's/^/copy nul /' >> crea.bat
call crea.bat
del crea.bat
Purtroppo non funziona, su sed mi da' lo stesso msg di cat....
sed non e' riconosciuto come comando interno o esterno ecc......
gioacchino
2009-11-21 11:35:34 UTC
Permalink
Post by Fede5815
Si puo' risolvere?
Si, si, mi sono sbagliato avendolo provato su linux! Il comando in
type Disney.txt | sed 's/^/copy nul /' >> crea.bat call crea.bat
del crea.bat
Purtroppo non funziona, su sed mi da' lo stesso msg di cat.... sed non
e' riconosciuto come comando interno o esterno ecc......
Infatti come dicevo nella prima mia risposta avendo "sed" è piuttosto
facile. Prova a cercare su internet "sed per dos" e scaricarlo.
gioacchino
2009-11-21 14:53:32 UTC
Permalink
Post by gioacchino
Post by Fede5815
Si puo' risolvere?
Si, si, mi sono sbagliato avendolo provato su linux! Il comando in
type Disney.txt | sed 's/^/copy nul /' >> crea.bat call crea.bat del
crea.bat
Purtroppo non funziona, su sed mi da' lo stesso msg di cat.... sed non
e' riconosciuto come comando interno o esterno ecc......
Infatti come dicevo nella prima mia risposta avendo "sed" è piuttosto
facile. Prova a cercare su internet "sed per dos" e scaricarlo.
In alternativa puoi utilizzare il codice che vedi qui sotto (un vecchio
post di 5 anni fa di DøctøR_DøøM) che serve ad inserire in testa ad ogni
riga una parola.

--cut--
@echo off
if [%1]==[] goto help
if [%2]==[] goto help
if [%3]==[] goto help
echo.%2 >parola
echo.a 80>deb
echo.dec cx>>deb
echo.dec cx>>deb
echo.>>deb
echo.p =80 2>>deb
echo.w>>deb
echo.q>>deb
debug parola <deb >nul
del deb
copy %1 tmp >nul
:loop
copy parola+tmp tmp2 >nul
find "%2" <tmp2 >>%3
find /V "%2" <tmp2 >tmp3
copy tmp3 tmp >nul
if exist tmp goto loop
if exist tmp del tmp
del tmp2
del tmp3
del parola
goto end
:help
echo.Uso: %0 fileditesto.txt parola_da_aggiungere output.txt
:end
--cut--

Ipotizzando che il file viene salvato come dd.bat puoi fare un file batch
in questo modo:

--cut--
@echo off
if [%1]==[] goto aiuto
if not exist %1 goto aiuto
echo.>zero
call dd %1 zero x
call dd x copy y.bat
call y
del zero
del x
del y.bat
--cut--

A questo punto salvi quest'altro file e lo esegui mettendo come primo
parametro il nome del file. Se per esempio questo secondo file batch lo
chiamerai puffo.bat allora farai:

puffo Disney.txt

Ciao
Fede5815
2009-11-22 14:59:09 UTC
Permalink
Post by gioacchino
Ipotizzando che il file viene salvato come dd.bat puoi fare un file batch
--cut--
@echo off
if [%1]==[] goto aiuto
if not exist %1 goto aiuto
echo.>zero
call dd %1 zero x
call dd x copy y.bat
call y
del zero
del x
del y.bat
--cut--
A questo punto salvi quest'altro file e lo esegui mettendo come primo
parametro il nome del file. Se per esempio questo secondo file batch lo
puffo Disney.txt
Ciao
Ciao, ti ringrazio molto dell'interessamento, più tardi lo provo.

purtroppo ho scarsa conoscenza di batch, e di informattica in generale, ho
provato da solo ma ad un certo punto mi fermo.
in fondo si tratta di estrarre stringhe da un txt e usarle come nomi di
altrettanti txt oppure di cartelle.
forse dovevo titolare il post "gestione dell'output del comando find".
il semplice
find /v /i "" Disney.txt
restituisce tutte le stringhe contenute in Disney.txt, il problema e'
appunto come farle diventare nomi di cartelle o file.txt.

ho provato con echo type md ma non ho ottenuto granche'.

di nuovo grazie per le risposte.
gioacchino
2009-11-22 15:23:51 UTC
Permalink
Post by Fede5815
Ciao, ti ringrazio molto dell'interessamento, più tardi lo provo.
prova poi mi fai sapere
Fede5815
2009-11-22 16:59:25 UTC
Permalink
Post by gioacchino
prova poi mi fai sapere
solito problema....
il dd non lo riconosce come comando....
considera che sono in ambiente WinXP
gioacchino
2009-11-22 21:09:46 UTC
Permalink
Post by Fede5815
Post by gioacchino
prova poi mi fai sapere
solito problema....
il dd non lo riconosce come comando.... considera che sono in ambiente
WinXP
Certo, come ti ho detto nei precedenti post devi creare tu un file
chiamato dd.bat con all'interno il codice che ti ho messo (il primo pezzo
di codice). A questo punto nella stessa directory dove hai creato quel
file ne crei un altro e lo chiami come ti pare, che ne so puffo.bat,
all'interno inserisci il codice che ti ho inserito (il secondo pezzo di
codice). Riguardati il post precedente.
E solo dopo aver creato questi due file fai:
puffo Disney.txt

Siccome non ho provato con WinXP, non vorrei che la chiamata
dell'istruzione "call" voglia non solo il nome del file ma anche
l'estensione, in tal caso prova a sostituire questo codice da questo:
call dd %1 zero x
call dd x copy y.bat
a questo:
call dd.bat %1 zero x
call dd.bat x copy y.bat
Antonio Manuel Ciampi
2009-12-03 12:52:30 UTC
Permalink
Post by gioacchino
Post by Fede5815
Post by gioacchino
prova poi mi fai sapere
solito problema....
il dd non lo riconosce come comando.... considera che sono in ambiente
WinXP
Certo, come ti ho detto nei precedenti post devi creare tu un file
chiamato dd.bat con all'interno il codice che ti ho messo (il primo pezzo
di codice). A questo punto nella stessa directory dove hai creato quel
file ne crei un altro e lo chiami come ti pare, che ne so puffo.bat,
all'interno inserisci il codice che ti ho inserito (il secondo pezzo di
codice). Riguardati il post precedente.
puffo Disney.txt
Siccome non ho provato con WinXP, non vorrei che la chiamata
dell'istruzione "call" voglia non solo il nome del file ma anche
call dd %1 zero x
call dd x copy y.bat
call dd.bat %1 zero x
call dd.bat x copy y.bat
EDLIN

Continua a leggere su narkive:
Loading...