Ms-Dos - AYUDA POR FAVOR. Necesito un .bat , que lea una tabla y tome un registro como nombre de archivo new

   
Vista:

AYUDA POR FAVOR. Necesito un .bat , que lea una tabla y tome un registro como nombre de archivo new

Publicado por vane (1 intervención) el 11/04/2017 20:03:21
Estimados le cuento la situación
tengo un .bat que hace una lectura en una tabla y genera un txt con los datos de la tabla sql, hasta ahí todo bien..
el tema es que ahora necesito que el NOMBRE del archivo generado (el que contiene los datos) sea el nombre de un atributo de una tabla (ya que se quiere dejar parametrizable el nombre del archivo).. el tema es que me pierdo en la parte de guardar una variable en el .bat .. alguien me podría ayudar?
dejo lo que tengo.. (es un .bat de prueba que estoy armando para el final )

GRACIAAAAAAAAAASSS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@echo on
title Interface
 
color cf
ECHO --------------------------------------------------------------------------
echo Generador de txt INTERFACES COMEX
ECHO --------------------------------------------------------------------------
echo.
echo.
rem --Crea carpeta
echo Creando Directorios de Respaldo
echo.
IF NOT EXIST C:\Users\VaneS\Desktop\InterfaceO MKDIR C:\Users\VaneS\Desktop\InterfaceO
 
echo Buscando el nombre del archivo
echo...
 
sqlcmd  -S NB-AAA -d VaneS -U sa -P Top3000 -Q "declare @NombreArchivo as varchar(50);select @NombreArchivo=Nombre FROM NombreInterface WHERE Id=1"   -o %datestr% -W -w 1024 -s"" -h-1
set datestr= @NombreArchivo
 
echo %NombreArchivo%
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

AYUDA POR FAVOR. Necesito un .bat , que lea una tabla y tome un registro como nombre de archivo new

Publicado por Antoni Masana amasana@hotmail.com (479 intervenciones) el 18/04/2017 19:03:47
Por lo que veo y lo poco que se de SQL en esta linea busca un texto que que debe ser el nombre de archivo, dicho texto debe salir por Standard output o Standard error y direccionarlo en un fichero

Es decir si esta línea te muestra en texto por pantalla:

sqlcmd -S NB-AAA -d VaneS -U sa -P Top3000 -Q "declare @NombreArchivo as varchar(50);select @NombreArchivo=Nombre FROM NombreInterface WHERE Id=1" -o %datestr% -W -w 1024 -s"" -h-1

Si no lo hace debes modificalo para que lo haga.

Añadir al final de la línea esto:

1
>file.tmp 2>&1

Ahora tienes un fichero con el texto del nombre del fichero. Una sola línea. Para pasarlo a una variable se hace esto:

1
2
3
4
FOR /F %%a IN (File.tmp) DO SET NombreArchivo=%%a
del file.tmp
 
echo %NombreArchivo%

Y hasta aquí lo que preguntas. y el BAT modificado.

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
28
@echo on
title Interface
 
color cf
echo --------------------------------------------------------------------------
echo Generador de txt INTERFACES COMEX
echo --------------------------------------------------------------------------
echo.
echo.
: -----  Crea carpeta
echo Creando Directorios de Respaldo
echo.
 
set Ruta=C:\Users\VaneS\Desktop\InterfaceO
 
IF NOT EXIST %Ruta% MKDIR %Ruta%
 
echo Buscando el nombre del archivo
echo...
 
sqlcmd  -S NB-AAA -d VaneS -U sa -P Top3000 -Q "declare @NombreArchivo as varchar(50);select @NombreArchivo=Nombre FROM NombreInterface WHERE Id=1"   -o %datestr% -W -w 1024 -s"" -h-1 >File.tmp 2>&1
 
FOR /F %%a IN (File.tmp) DO SET NombreArchivo=%%a
del file.tmp
 
echo %NombreArchivo%
echo.
echo %Ruta%\%NombreArchivo%

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
Revisar política de publicidad