1 votos

Subcadena de una variable con dos por ciento en un archivo .bat

Me enfrenté a un problema al tratar de implementar un archivo .bat y no encontré una respuesta. Intento mostrar todos los nombres de las carpetas sin la ruta del sistema.

He intentado algo así pero no funciona.

 @echo off
set back=%cd%
for /d %%I in (C:\test\test*) do (
    cd %%I 2>&1 >nul
    echo %%~nxI:~10,5
)
cd %back% 2>&1 >nul
 

¿Tienes una solución, por favor? :-)

1voto

LotPings Puntos 62

Las subcadenas solo funcionan con variables normales, no con las metavariables.
Copia contenido a una var y como está dentro de un (bloque de código) necesitas DelayedExpansion
Usando el método de pseudo llamada:

 :: Q:\Test\2018\07\26\SU_1345000.cmd
@echo off
PushD .
for /d %%I in (A:\test\test*) do (
    Set "Dir=%%I"
    Call echo %%Dir:~10,5%%
)
PopD
 

En un árbol como este:

 > tree 
└───test
    ├───test1
    ├───test2
    └───test3
 

eso regresa

 > Q:\Test\2018\07\26\SU_1345000.cmd
st1
st2
st3
 

Posiblemente su compensación no era correcta.

0voto

chloesoe Puntos 331

Podría usar dir /ad /b C:\test\test*

 @echo off
set back=%cd%
for /d %%I in (C:\test\test*) do (
    dir /ad /b %%I
)
cd %back% 2>&1 >nul
 

Este script imprimirá todos los nombres de carpeta en las carpetas C:\test\test*

0voto

NicoFC34 Puntos 8

Gracias por tus respuestas. Aquí hay una solución que funcionó para mí:

 @echo off

setlocal EnableDelayedExpansion

for /d %%I in (C:\test\testV*) do (     
    set current_folder=%%I
    set test_version=!current_folder:~12,6!
    set test_version=!test_version:_=.!

    echo !current_folder!
    echo !test_version!
)
 

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: