Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Estrazione caratteri ciclo FOR

    Salve a tutti.
    Sono alle prese con un problema che pensavo fosse più semplice da superare.
    Metto subito le cose in chiaro con qualche esempio pratico, in modo da capire subito.

    Ho un file di testo,
    CAMPO1 CAMPO2 CAMPO3 CAMPO..

    Lo filtro con uno script dos che mi tira fuori solo quel che mi serve (fin qui tutto ok) e mi tiene i token che mi interessano (es. CAMPO1 CAMPO3)

    A questo benedetto punto vorrei poter interagire con la variabile appena creata estraendo SOLO alcuni caratteri che mi interessano... ma non trovo la sintassi... in quanto da normale variabile basta un %VAR:~5,2% mentre nel mio caso sono in un ciclo FOR di uno script batch, dunque la variabile è rappresentata in un batch con un %%VAR....

    ora, come dico dentro ad un ciclo FOR di estrapolare solo alcuni caratteri da una variabile?

    %%VAR:~5,2 [NO]
    %VAR:~5,2% [NO]
    %%%VAR:~5,2% [NO]

    COME DIAVOLO SI TIRA FUORI?

  2. #2

    Re: Estrazione caratteri ciclo FOR

    Originariamente inviato da verbal_666
    ...
    COME DIAVOLO SI TIRA FUORI?
    Il sistema c'è, ma facciamo molto prima se mostri il file batch che usi.
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  3. #3
    Un sistema simil accrocco potrei anche tirarlo fuori, tipo

    setlocal
    set temp=%%var
    set temp2=%temp:~5,2%
    echo %temp2% >file [o qualsiasi altro comando che a sto punto usa tempa filtrato]
    endlocal

    ... ma è tutto da testare...

    Cmq fondamentalmente il batch è così configurato (lo ricostruisco ora in maniera semplice nella sua parte essenziale)

    for /f "tokens=8,20" %%a in (miofile) do (
    if "%%a"=="%%b" echo %%a -- %%b >>tempfile
    )


    ... è proprio nel controllo %%a con %%b che devo filtrare solo dei caratteri per fare il contronto... a questo punto proverò con qualcosa del tipo

    for /f "tokens=8,20" %%a in (miofile) do (
    setlocal
    set tempa=%%a
    set tempb=%%b
    if "%tempa:~-11%"=="%tempb:~-11%" echo %tempa% -- %tempb% >>tempfile
    endlocal
    )


    ... per vedere se riesco con un accrocco...

    Se però ci fosse SUBITO da %%a a tirare fuori un testo filtrato, tanto di guadagnato... ma non trovo proprio il modo con qualsiasi sintassi provi... documentazione a riguardo non ce n'è

    Vediamo se sai aiutarmi, grazie in anticipo cmq vada

  4. #4
    Originariamente inviato da verbal_666

    Se però ci fosse SUBITO da %%a a tirare fuori un testo filtrato, tanto di guadagnato... ma non trovo proprio il modo con qualsiasi sintassi provi... documentazione a riguardo non ce n'è
    Infatti sembra proprio che non ci sia un modo diretto per farlo

    Originariamente inviato da verbal_666
    Vediamo se sai aiutarmi, grazie in anticipo cmq vada
    Io ci provo, speriamo bene...
    codice:
    @ECHO OFF & SETLOCAL ENABLEDELAYEDEXPANSION
    
    
    FOR /F "tokens=8,20" %%a IN (miofile) DO (
    	SET tempa=%%a
    	SET tempb=%%b
    	IF !tempa:~-11! == !tempb:~-11! ECHO !tempa! -- !tempb! >> tempfile
    )
    
    PAUSE
    Fammi sapere se è questo che ti serviva.
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  5. #5
    Spettacolo! Funziona
    Ti ringrazio vivamente...

  6. #6
    E' stato un piacere, è tornato utile anche a me, altrimenti mi dimentico tutto del batch
    Ciao.
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.