Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Dos assegnazioni di variabili

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Triumph Of Steel, archimede

Dos assegnazioni di variabili

Postdi evvivame » 24/08/13 00:04

Ciao,
ho un file in cui c'è dentro (solo) una riga cosi fatta:

Codice: Seleziona tutto
 Directory di D:\Documenti\xxxxxxxxxxxxx


come si fa ad assegnare alla variabile:
%Partizione il valore D
%Cartella il valore Documenti

Grazie !!
evvivame
Utente Senior
 
Post: 133
Iscritto il: 19/09/05 20:38

Sponsor
 

Postdi archimede » 24/08/13 10:40

Se il path NON contiene spazi (come nell'esempio da te postato):
Codice: Seleziona tutto
@echo off
for /f "tokens=3" %%i in ('findstr "Directory di" prova.txt') do set variabile=%%i
call :split %variabile%
echo drive=%drive% path=%path% name=%name% ext=%ext%
goto :eof

:split
set drive=%~d1
set path=%~p1
set name=%~n1
set ext=%~x1
goto :eof
Se invece il path può essere una roba tipo
Codice: Seleziona tutto
Directory di D:\My Documents\subdir 1\abcd efgh.txt 2
allora
Codice: Seleziona tutto
@echo off
setlocal
for /f "tokens=*" %%a in ('type prova2.txt') do set line=%%a

set line=%line:Directory di =%

call :findlast "%line%"

set Partizione=%line:~0,1%
set /a L=%L%-3
set Cartella=!line:~3,%L%!
set /a L=%L%+4
set Filename=!line:~%L%!

echo %Partizione%
echo %Cartella%
echo %Filename%

goto :eof

:findlast
set I=0
set L=-1
set S=%~1
:l
if "!S:~%I%,1!"=="" goto :eof
if "!S:~%I%,1!"=="\" set L=%I%
set /a I+=1
goto l
HTH.

Alessandro
archimede
Moderatore
 
Post: 2753
Iscritto il: 07/11/02 12:41
Località: Genova

Re: Dos assegnazioni di variabili

Postdi evvivame » 25/08/13 11:03

@Alessando

1. Grazie !!
2. era il primo batch che mi serviva
3. l'unica modifica che ho dovuto fare riguarda questa parte ( vedi 1° goto e inserimento :eof )
....................................
goto eof

:split
set drive=%~d1
set path=%~p1
set name=%~n1
set ext=%~x1
goto :eof

:eof
e qui prosegue con la mia vecchia parte



Ora il TUTTO funziona a ...metà : cerco di spiegarmi:
1) la tua parte serve per preparare i percorsi successivi.
2) il batch fa un xcopy di una cartella SOLO SE ESISTE E NON E' VUOTA:
- se non esiste esce "D:\Documenti\IP Camera Super Client Full\alarm\Cam_1\2013-08-24\ non esiste" cio vuol dire che la tua parte funziona come un violino ( visto che l'echo è "%drive%%path%IP Camera Super Client Full\video\%id%\%ieri%\ non esiste ")
- se invece nella cartella ci sono file fa una XCOPY ( "xcopy "%drive%%path%IP Camera Super Client Full\alarm\*.*" "%drive%%path%IP Camera Super Client\alarm\" /y /e /s >>copy.txt ") che pero' mi da: "Xcopy non è riconosciuto come comando interno o esterno, un programma o un file batch"

Sono stata chiara?

Buona domenica
evvivame
Utente Senior
 
Post: 133
Iscritto il: 19/09/05 20:38

Re: Dos assegnazioni di variabili

Postdi evvivame » 25/08/13 11:51

Sa solo Dio perche con la tua parte serve il percorso del comando xcopy tipo:

Codice: Seleziona tutto
c:windows\system32\xcopy "%drive%%path%IP Camera Super Client Full\alarm\*.*" "%drive%%path%IP Camera Super Client\alarm\" /y /e /s >>copy.txt


Ma non ha importanza ...tutto bene quel finisce bene :D

Grazie ancora !
evvivame
Utente Senior
 
Post: 133
Iscritto il: 19/09/05 20:38


Torna a Programmazione


Topic correlati a "Dos assegnazioni di variabili":


Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti

cron