Discussion:
Ejecucion de comando DOS
(demasiado antiguo para responder)
Lorenzo
2004-10-19 07:04:36 UTC
Permalink
Buenos dias.

Soy algo novato en esto de Access y me gustaria que alguien me comentara si
es posible desde una aplicacion Access ejecutar comandos de DOS, es decir,
ordenes de copias de archivos de unas carpetas a otras temporales donde
poder tratarlos con comodidad para no interferir con otros usuarios. Es
decir, necesito ejecutar el comando "copy c:\dbase\*.dbf c:\tempodbf\".

Es posible ????
--
Gracias a todos por vuestra ayuda.-

Lorenzo / Malaga / España
Búho
2004-10-19 07:53:27 UTC
Permalink
VBA de access tiene funciones de copia de ficheros : FILECOPY (Ver ayuda de
VBA de access). Además podrías utilizar el modelo FSO(File System Object)
No obstante, la respuesta a tu pregunta es SI: Se pueden ejecutar ordenes de
«dos» desde VBA...pero ya te digo...no lo necistas....
--
Saludos desde Valladolid
Francisco Javier García Aguado
***@mvp-access.com
---
http://www.mvp-access.com/buho
http://www.mvp-access.com/foro
http://groups.msn.com/Access2000VisualBasic/
Mi Perfil de MVP en Microsoft:
http://tinyurl.com/6ysvu
---
Lorenzo
2004-10-19 09:51:54 UTC
Permalink
Buenas.
Gracias por la respuesta .... ¿Me puedes decir si estoy haciendo algo mal?

FileCopy "\\Servidor\SP\TPVE\DBF01\articulo.dbf", "C:\Temporal\Garantias
Centralitas\articulo.dbf"

Me da un mensaje diciendo "Permiso Denegado". Tengo permisos de
administrador y si lo hago desde una ventada DOS no hay ningun problema.
Posiblemente los archivos esten abiertos, pero eso no me da problemas al
hacerlo con un copy del DOS. ¿Puede ser ese el problema?
Post by Búho
VBA de access tiene funciones de copia de ficheros : FILECOPY (Ver ayuda de
VBA de access). Además podrías utilizar el modelo FSO(File System Object)
No obstante, la respuesta a tu pregunta es SI: Se pueden ejecutar ordenes de
«dos» desde VBA...pero ya te digo...no lo necistas....
--
Saludos desde Valladolid
Francisco Javier García Aguado
---
http://www.mvp-access.com/buho
http://www.mvp-access.com/foro
http://groups.msn.com/Access2000VisualBasic/
http://tinyurl.com/6ysvu
---
Búho
2004-10-19 10:08:18 UTC
Permalink
Hola. Si los ficheros estan abiertos, en efecto...FileCopy no
funciona....Intenta, simplemente por probar, copiar un fichero que sepas que
no está abierto, siguiendo la anterior sintaxis (Ya veo que copias de un
ordenador de la red a otro local que corre el codigo)
No obstantes: Alternativas: FSO o la API:
...copio trozos de codigo...ando jodi*n de tiempo...ahi va:


Private Declare Function CopiaFichero Lib "kernel32" Alias _
"CopyFileA" (ByVal lpExistingFileName As String, _
ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long

Sub Primero()
'API
CopiaFichero RutaOrigen, RutaDestino, 0
End Sub

Sub Segundo()
'FSO
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFile "C:\Carpeta\fichero.txt", "C:\RutaDestino\Copia.txt"
Set fso = Nothing
End Sub
--
Saludos desde Valladolid
Francisco Javier García Aguado
***@mvp-access.com
---
Búho
2004-10-19 10:17:51 UTC
Permalink
visteme despacio que tengo prisa.... :-S
se me olvidó lo del interprete de comandos:

Shell "cmd.exe /c copy c:\lee.txt c:\taller\cosa.bat" para sistemas
Windows XP
Shell "command.com /c copy c:\lee.txt c:\taller\cosa.bat" para sistemas Win
98
--
Saludos desde Valladolid
Francisco Javier García Aguado
***@mvp-access.com
Lorenzo
2004-10-19 11:45:47 UTC
Permalink
Muchisimas gracias, me funciono perfectamente con el metodfo FSO, aun
estando los ficheros abiertos.
En cualquier caso me tomo nota de los otros dos metodos.
Gracias de nuevo ...
Post by Búho
visteme despacio que tengo prisa.... :-S
Shell "cmd.exe /c copy c:\lee.txt c:\taller\cosa.bat" para sistemas
Windows XP
Shell "command.com /c copy c:\lee.txt c:\taller\cosa.bat" para sistemas Win
98
--
Saludos desde Valladolid
Francisco Javier García Aguado
Battle Troll
2004-10-19 15:47:32 UTC
Permalink
En ese caso SI conviene usar funciones de MS-DOS...

el comando copy copia los archivos aun si se estan abiertos para lectura o
escritura por otra aplicacion (nomas asegurate que no se este escribiendo
nada mientras realizas la copia o los resultados son impredescibles).

Y para ejecutar un programa de DOS lo unico que necesitas es:
Shell "Ruta y nombre de tu programa"

shell tiene otras opciones, segun quieres se muestre o no la ventana...

y para quien afirme que eso es algo "primitivo", digo que las interfaces
de consola, aunque dificiles de aprender a manejar, permiten mas control
sobre la maquina una vez se dominan...

si yo quisiera copiar todos los archivos DBF que comienzen con R_ o M_ y
nada mas...

¿hay algo mas sencillo que hacer un pequeño BAT como el que sigue?

@echo off
for %f in (R_*.dbf M_*.dbf) do copy %f \midir\%f /b
<fin del archivo>

ese mini-bat se podria mandar ejecutar desde access y en un plumazo
copiaria los archivos que quiero... ¿se puede hacer mas sencillo aun?
--
Usando el revolucionario cliente de correo de Opera:
http://www.opera.com/m2/
Continúe leyendo en narkive:
Loading...