Ms-Dos - Nombre de Carpeta con Variables

 
Vista:
sin imagen de perfil
Val: 27
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Nombre de Carpeta con Variables

Publicado por Blas (16 intervenciones) el 04/01/2021 08:34:00
Hola, me Ayudan?

mi proceso por lotes pide 2 datos que almacena en variables y con esa info arma el nombre de una carpeta


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
REM AGREGA LA PRIMER PARTE DEL NOMBRE DE LA CARPETA A CREAR
set part1="PAGO Nº "
 
REM SOLICITA EL INGRESO DEL Nº DE PAGO EN LA VARIABLE OS
set/p OS=       Ingrese el numero de PAGO :
 
REM AGREGA UNA CADENA SEPARADORA ANTES DEL IMPORTE
set part2=" - $  "
 
REM SOLICITA EL INGRESO DEL IMPORTE DE LA OP EN LA VARIABLE IMPORTE
set/p IMP=     Ingrese el importe
 
REM CREA UNA CARPETA CON LAS CADENAS DE LAS  VARIABLES: part1 & OS & part2 & IMP
MKDIR %part1%%OS%%part2%%IMP%
 
REM CAMBIA AL DIRECTORIO CREADO
cd %part1%%OS%%part2%%IMP%
 
TYPE NUL > "0- CARATULA DE PAGO.TXT"
TYPE NUL > "10- PEDIDO DE PAGO.TXT"
 
 
    REM VUELVE A LA CARPETA ANTERIOR Y COPIA UN EXCEL DENTRO DE LA CARPETA CREADA
CD..
COPY "3- DETALLE OPXXXX.xlsx" %part1%%OS%%part2%%IMP%
 
ECHO TAREA COMPLETADA, PRESIONE UNA TECLA PARA VOLVER AL MENU PRINCIPAL O ESCAPE (ESC) PARA SALIR


BUENO, ESE ES MI CODIGO, el cual funcionaba hasta que agregue la variable IMP.
tambien me ocurre que si ingreso un valor con comas decimales me crea dos carpetas. y los TXT vacios los deja en cualquier lado..

me ayudan??
quiero que el pedido de Nº de pago y de importe ayuden a crear el nombre de la carpeta
Por Ejemplo: " Pago Nº 333 - $ 1.234,56"

en el caso del importe, quiero ingresarlo como 1234.56 y que lo cambie a 1.234,56..
Dentro de esa carpeta crear 2 TXT vacios y copiar un Excel que tengo en el raiz..
Les agradecere cualquier ayuda !!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Nombre de Carpeta con Variables

Publicado por Antoni Masana (811 intervenciones) el 04/01/2021 17:45:55
Para los nombres de Archivos y Directorios hay una serie de caracteres permitidos y otros prohibidos y unos pocos que dar por saco por decirlo finamente.

Entre los que dan por saco son los espacios, la coma , el punto y coma y los paréntesis y puede que me deje alguno, sobre todo para trabajar con ficheros BAT.

En tu caso has lo siguiente y te funcionara.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|echo off
 
REM SOLICITA EL INGRESO DEL Nº DE PAGO EN LA VARIABLE OS
set /p OS=       Ingrese el numero de PAGO :
 
REM SOLICITA EL INGRESO DEL IMPORTE DE LA OP EN LA VARIABLE IMPORTE
set /p IMP=     Ingrese el importe:
 
: --- Crea una variable con el nombre del directorio  con las cadenas de las variables.
set Direc="PAGO Nº %Os% - $  %Imp%"
 
REM CREA UNA CARPETA
MKDIR %Direc%
 
REM CAMBIA AL DIRECTORIO CREADO
cd %Direc%
 
TYPE NUL > "0- CARATULA DE PAGO.TXT"
TYPE NUL > "10- PEDIDO DE PAGO.TXT"
 
 REM VUELVE A LA CARPETA ANTERIOR Y COPIA UN EXCEL DENTRO DE LA CARPETA CREADA
CD..
COPY "3- DETALLE OPXXXX.xlsx" %Direc%
 
ECHO TAREA COMPLETADA, PRESIONE UNA TECLA PARA VOLVER AL MENU PRINCIPAL O ESCAPE (ESC) PARA SALIR
echo.
PAUSE

Otra opción:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|echo off
 
REM SOLICITA EL INGRESO DEL Nº DE PAGO EN LA VARIABLE OS
set /p OS=       Ingrese el numero de PAGO :
 
REM SOLICITA EL INGRESO DEL IMPORTE DE LA OP EN LA VARIABLE IMPORTE
set /p IMP=     Ingrese el importe:
 
: --- Crea una variable con el nombre del directorio  con las cadenas de las variables.
set Direc=PAGO Nº %Os% - $  %Imp%
 
REM CREA UNA CARPETA
MKDIR "%Direc%"
 
TYPE NUL > "%Direc%\0- CARATULA DE PAGO.TXT"
TYPE NUL > "%Direc%\10- PEDIDO DE PAGO.TXT"
 
 REM VUELVE A LA CARPETA ANTERIOR Y COPIA UN EXCEL DENTRO DE LA CARPETA CREADA
CD..
COPY "3- DETALLE OPXXXX.xlsx" "%Direc%"
 
ECHO TAREA COMPLETADA, PRESIONE UNA TECLA PARA VOLVER AL MENU PRINCIPAL O ESCAPE (ESC) PARA SALIR
echo.
PAUSE

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 27
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Nombre de Carpeta con Variables

Publicado por Blas (16 intervenciones) el 05/01/2021 00:14:06
Antoni, como es habitual, es un placer recibir tus aportes que, sin lugar a dudas, ofrecen claridad y rapidez a las consultas.
Aprovecho a saludarte por este nuevo y particular comienzo de año, esperemos que sea en paz, unidos y con "vacuna".

Sobre lo que nos ocupa, me encanto tu solución, la explicación de los caracteres permitidos y los que "dan por saco" (jajjaa me encanto eso) y el codigo arreglado con sus dos variantes.

Muchas gracias !!!! ya lo estuve probando y funciona muy bien,
tuve que ajustar algunas cosas menores pero es genial, entre otros, cambie el texto de N° por Num ya que mostraba caracteres horribles,.

Me marcaba un error en la busqueda del EXCEL a copiar, pero lo solucione en la linea
COPY "3- DETALLE OPXXXX.xlsx" "%Direc%", cambiando a
COPY "3- DETALLE OPXXXX.xlsx" "%Direc%\"

Ahora buscare informacion para reemplazar el "." en la variable por una ","
De ese modo, al cargar el importe desde el tecladso numerico, si tuviera un punto lo transforma en coma.
Tambien buscare para que el importe lo coloque con separador de millares.

Gracias !!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Nombre de Carpeta con Variables

Publicado por Antoni Masana (811 intervenciones) el 05/01/2021 10:49:36
La verdad es que asi:

1
COPY "3- DETALLE OPXXXX.xlsx" "%Direc%"

debería funcionar pero es mejor hacerlo así:

1
COPY "3- DETALLE OPXXXX.xlsx" "%Direc%\."

Tiene la ventaja de que si no existe el directorio destino no lo copia.

Segundo tema.

Para que se muestre bien el carácter o desde una ventana de MSDOS has esto:

1
C:\> echo Nº >>run.bat

Edita en fichero y veras después de la N sale un churro. Ahora ya tienes el carácter para que al ejecutarlo se vea correctamente.

Tercer tema.

Para reemplazar un carácter en una variable usa el comando SET. Para más información desde una ventana de CMD SET /?

Reemplazar carácter: SET VAR=%VAR:A=a%

Reemplaza la A mayúscula por la a minúscula:

1
2
3
4
5
6
7
8
9
C:\Users\User>set VAR=PATATA
 
C:\Users\User>echo %VAR%
PATATA
 
C:\Users\User>set VAR=%VAR:A=a%
 
C:\Users\User>echo %VAR%
PaTaTa

Otro truco

1
2
3
4
5
6
7
8
9
C:\Users\User>set VAR="PATATA"
 
C:\Users\User>echo %VAR%
"PATATA"
 
C:\Users\User>set VAR=%VAR:~1,-1%
 
C:\Users\User>echo %VAR%
PATATA

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 27
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Nombre de Carpeta con Variables

Publicado por Blas (16 intervenciones) el 05/01/2021 18:33:10
Antoni, MAgo total. haces de la simpleza una catedra.
Gracias.
Tema 1: En mi batch no funciono sin la "\" por lo que mantuve la linea
COPY "3- DETALLE OPXXXX.xlsx" "%Direc%\", como veras sin el "." punto que pusiste al final-.

Tema 2: preferi modificar el nombre de manera de evitar caracteres especiales. por su parte tu forma es simplemente genial.

Tema 3 Genial el metodo de reemplazo de caracteres, resulta muy facil !!! tambien la eliminacion de las comillas !!

Gracias !!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar