Pàgina d'inici » Posts tagged 'MS-DOS'

Tag Archives: MS-DOS

MS-DOS: Obtenir path del script batch i altres trucs interessants.

USA Flag German Flag Spain Flag
http://www.microsoft.com - cmd.exe
Microsoft CMD

Obtenir path del Batch i trucs semblants

Al treballar amb scripts – Batch de vegades cal accedir a informació contextual del entorn.

Les següents opcions permeten obtenir informació del entorn d’execució del script:

Instrucció Exemple
%cd% ~"current directory"
Carpeta actual de treball (variable)No te perquè ser la carpeta on esta ubicat el script
c:\temp>c:\temp\exemple.bat
cd= c:\temp
dp= c:\temp\exemple.bat
%~dp0

Carpeta del script (fixed)

Veure a dalt
%0

Nom del script

c:\temp\exemple.bat0=c:\temp\exemple.bat

%cd:~0,3%

Unitat on esta ubicat

c:\

 Mòdul per passar a majúscules (UpperCase)

Publicat per la increïble pàgina dostips.com

:toUpper str — converts lowercase character to uppercase
:: — str [in,out] – valref of string variable to be converted
:$created 20060101 :$changed 20080219 :$categories StringManipulation
:$source http://www.dostips.com
if not defined %~1 EXIT /b
for %%a in (“a=A” “b=B” “c=C” “d=D” “e=E” “f=F” “g=G” “h=H” “i=I”
“j=J” “k=K” “l=L” “m=M” “n=N” “o=O” “p=P” “q=Q” “r=R”
“s=S” “t=T” “u=U” “v=V” “w=W” “x=X” “y=Y” “z=Z” “ä=Ä”
“ö=Ö” “ü=Ü”) do (
call set %~1=%%%~1:%%~a%%
)
EXIT /b
 Verificar si un directori esta buit
for /F %%i in (‘dir /b /a “%v_origen02%\*”‘) DO (SET v_ACTIV=Y)
 I ara que tinc les variables… com puc treure les cometes!!???

Amb la substitució de caràcters 🙂

SET v_check_file=%v_check_file:”=%

set v_check_file=”C:\Temp\test origen”
set v_files=”fitxer A COPIAR.txt”
set v_check_file=%v_check_file%\%v_files%
echo %v_check_file%
SET v_check_file=%v_check_file:”=%
echo %v_check_file%
Particionar un Path complert en els seus components:
Unitat, path, nom del fitxer, extensió, …
ECHO Tractant… %P1%
REM
For %%A in (%P1%) do (
echo full path: %%~fA
echo directory: %%~dA
echo path: %%~pA
echo file name only: %%~nA
echo extension only: %%~xA
echo expanded path with short names: %%~sA
echo attributes: %%~aA
echo date and time: %%~tA
echo size: %%~zA
echo drive + path: %%~dpA
echo name.ext: %%~nxA
echo full path + short name: %%~fsA
set v_sortida=%%~dpAGENERAT_%%~nA%%~xA
)
ECHO Sortida a:%v_sortida%

Enllaços relacionats:

Anuncis

BAT: Executar un programa en USB evitant el Firewall

USA Flag German Flag Spain Flag
http://www.microsoft.com - cmd.exe
Microsoft CMD

He escrit diferents post respecte l’ús de scripting amb MS-DOS perquè m’han ajudat a resoldre diferents situacions; una de elles es l’execució d’un programa quan el Firewall te una regla que impedeix l’execució de programes des de USB. Es el que anomeno el CALLER.bat

A més de pasada miraré com guardar la ubicació base per a tornar desprès de l’execució.

Veiem l’script:

set v_unit=O:
set v_caller_path=O:\_Path\Script_Exemple
set v_caller_bat=_Exemple.bat
REM
REM
set v_sourcedir=%cd%        <- Aquesta es la instrucció clau per a torna al origen.
ECHO %0 --- BEGIN
echo v_sourcedir:%v_sourcedir%
%v_unit%
cd %v_caller_path%
@call %v_caller_path%\%v_caller_bat%  <- Instrucció clau per a executar el que volem.
move /y *.txt "%v_sourcedir%\"     <- Exemple per a moure tots els fitxers a la ubicació origen
echo %0 --- END
pause
%d bloggers like this: