PDA

View Full Version : Sostituzione testo con variabile


Gialandra
04-02-2019, 00:41
Ho un file cmd in cui devo cambiare diverse volte una stringa che si ripete. Č possibile fissare una variabile in modo che variando il valore della variabile evito il cambio di tutte le occorrenze?

Tipo cosė (prima/dopo):

magick montage -tile 12x -geometry +0+0 C:\Users\MN\Downloads\Elab\0*.png "C:\Users\MN\Downloads\ELAB\Valsana - 0.png"
magick montage -tile 23x -geometry +0+0 C:\Users\MN\Downloads\Elab\1*.png "C:\Users\MN\Downloads\ELAB\Valsana - 1.png"
magick montage -tile 46x -geometry +0+0 C:\Users\MN\Downloads\Elab\2*.png "C:\Users\MN\Downloads\ELAB\Valsana - 2.png"

mkdir "Valsana - 0"
mkdir "Valsana - 1"
mkdir "Valsana - 2"
______

X=Valsana

magick montage -tile 12x -geometry +0+0 C:\Users\MN\Downloads\Elab\0*.png "C:\Users\MN\Downloads\ELAB\X - 0.png"
magick montage -tile 23x -geometry +0+0 C:\Users\MN\Downloads\Elab\1*.png "C:\Users\MN\Downloads\ELAB\X - 1.png"
magick montage -tile 46x -geometry +0+0 C:\Users\MN\Downloads\Elab\2*.png "C:\Users\MN\Downloads\ELAB\X - 2.png"

mkdir "X - 0"
mkdir "X - 1"
mkdir "X - 2"

misterx
04-02-2019, 17:29
guarda qui https://ss64.com/nt/for.html

Gialandra
04-02-2019, 20:20
Grazie per il link ma mi sembra troppo avanzato per me. Mi sa che faccio prima con un "cerca e sostituisci" su tutto il listato... :boh:

misterx
05-02-2019, 07:36
@echo off
setlocal enabledelayedexpansion

set trova=X
set sosti=valsana

for /f "tokens=* delims=" %%a in ( miofile.txt ) DO (
set mstr=%%a
set mstr=!mstr:%trova%=%sosti%!

echo !mstr!>>sosti.txt
)


miofile.txt
magick montage -tile 12x -geometry +0+0 C:\Users\MN\Downloads\Elab\0*.png "C:\Users\MN\Downloads\ELAB\X - 0.png"
magick montage -tile 23x -geometry +0+0 C:\Users\MN\Downloads\Elab\1*.png "C:\Users\MN\Downloads\ELAB\X - 1.png"
magick montage -tile 46x -geometry +0+0 C:\Users\MN\Downloads\Elab\2*.png "C:\Users\MN\Downloads\ELAB\X - 2.png"

mkdir "X - 0"
mkdir "X - 1"
mkdir "X - 2"


sosti.txt
magick montage -tile 12valsana -geometry +0+0 C:\Users\MN\Downloads\Elab\0*.png "C:\Users\MN\Downloads\ELAB\valsana - 0.png"
magick montage -tile 23valsana -geometry +0+0 C:\Users\MN\Downloads\Elab\1*.png "C:\Users\MN\Downloads\ELAB\valsana - 1.png"
magick montage -tile 46valsana -geometry +0+0 C:\Users\MN\Downloads\Elab\2*.png "C:\Users\MN\Downloads\ELAB\valsana - 2.png"
mkdir "valsana - 0"
mkdir "valsana - 1"
mkdir "valsana - 2"

Gialandra
05-02-2019, 07:49
Cavolo! Avevo valutato bene quando ho deciso di lasciar perdere :D

Stasera quando rientro lo provo e ti dico, grazie intanto.

Gialandra
06-02-2019, 17:57
Ho appena provato il tuo codice: funziona perfettamente! Grazie :cincin:

misterx
07-02-2019, 06:06
come vedi non č troppo complicato, da questo punto in poi vai avanti tu


@ECHO OFF
setlocal enabledelayedexpansion

del sosti.txt

FOR /f "tokens=* delims=" %%g in ( miofile.txt ) DO (

SET mstr=%%g

FOR /F "tokens=1,2 delims=," %%A IN (parole.txt) DO (

SET mstr=!mstr:%%A=%%B!
)

echo !mstr!>>sosti.txt
)


parole.txt
X,ics
kp,kappapi
Users,utente

miofile.txt
magick montage -tile 12x -geometry +0+0 C:\Users\MN\Downloads\Elab\0*.png "C:\Users\MN\Downloads\ELAB\X - 0.png"
magick montage -tile 23x -geometry +0+0 C:\Users\MN\Downloads\Elab\1*.png "C:\Users\MN\Downloads\ELAB\X - 1.png"
magick montage -tile 46x -geometry +0+0 C:\Users\MN\Downloads\Elab\2*.png "C:\Users\MN\Downloads\ELAB\X - 2.png"

magick montage -tile 12x -geometry +0+0 C:\Users\MN\Downloads\Elab\0*.png "C:\Users\MN\Downloads\ELAB\kp - 0.png"
magick montage -tile 23x -geometry +0+0 C:\Users\MN\Downloads\Elab\1*.png "C:\Users\MN\Downloads\ELAB\kp - 1.png"
magick montage -tile 46x -geometry +0+0 C:\Users\MN\Downloads\Elab\2*.png "C:\Users\MN\Downloads\ELAB\kp - 2.png"