modificar codigo

Iniciado por binario010101, 23 Noviembre 2013, 03:18 AM

0 Miembros y 2 Visitantes están viendo este tema.

binario010101

hola amigos me pueden ayudar a modificar este codigo para que copie  los archivos del resultado de la busqueda a la carpeta desde la cual se ejecuta el bat


@echo on
Set Pattern=magodeoz
Dir /B /S "%SYSTEMDRIVE%\*%Pattern%*.doc*"

pause


el codigo lo que hace es buscar cual de los archivos del disco local de extensión .doc contiene la palabra magodeoz. quiero copiar esos archivos a la usb desde la cual ejecuto el bat o a una carpeta de la usb

gracias

[MOD] "no soy ing estudio sicologia"      ¿Será Psicologia?
binario010101@hotmail.com
no soy ing estudio sicologia

Almapa

Si el comando 'Dir' ya te saca los archivos que quieres copiar bien, sin ningún dato que pueda molestar, con un "for /f" ya podrías recorrer todas las salidas de dicho comando y por lo tanto copiarlas donde quieras. Prueba algo así:

@echo on
Set Pattern=magodeoz
Set Carpetafinal=%cd%

for /f "tokens=*" %%G in ('Dir /B /S "%SYSTEMDRIVE%\*%Pattern%*.doc*"') do (copy %%G %Carpetafinal%)

pause


Obviamente en la variable "Carpetafinal" tendrás que poner la ruta donde quieras que se copien, o de lo contrario eliminar la variable y ponerlo directamente sobre el comando.

PD: No te aseguro que vaya, pues no lo he probado.

Un saludo!

binario010101

#2
funciona amigo el problema es que si el archivo tiene un espacio en el nombre no lo copia.

lo intente asi



E:\>Set Pattern=magodeoz

E:\>Set Carpetafinal=E:\

E:\>for /F "tokens=*" %G in ('Dir /B /S "C:\*magodeoz*.doc*"') do (copy %G E:\
)


E:\>(copy C:\Users\magodeoz (2) - copia - copia.docx E:\ )

El sistema no puede encontrar el archivo especificado.


E:\>pause
Presione una tecla para continuar . . .


probe con   " "


@echo on
Set Pattern=magodeoz
Set Carpetafinal=%cd%

for /f "tokens=*" %%G in ('Dir /B /S "%SYSTEMDRIVE%\"*%Pattern%*.doc*""') do (copy %%G %Carpetafinal%)

pause


binario010101@hotmail.com
no soy ing estudio sicologia

Eleкtro

#3
Cita de: binario010101 en 23 Noviembre 2013, 14:37 PM"%SYSTEMDRIVE%\"*%Pattern%*.doc*""

Has escrito comillas de más.

Expresión abierta

"Expresión cerrada"

"Expresión"troll""

Código (DOS) [Seleccionar]
for /f "tokens=*" %%G in ('Dir /B /S "%SYSTEMDRIVE%\*%Pattern%*.doc"') do (copy "%%G" "%Carpetafinal%")

saludos








binario010101

las "" que sobran las puse para tratar de corregir el problema no funciono.

el codigo sin modificar es


for /f "tokens=*" %%G in ('Dir /B /S "%SYSTEMDRIVE%\*%Pattern%*.doc*"') do (copy %%G %Carpetafinal%)



modificado es probado asi pero se mantiene el error


for /f "tokens=*" %%G in ('Dir /B /S "%SYSTEMDRIVE%\"*%Pattern%*.doc*""') do (copy %%G %Carpetafinal%)
binario010101@hotmail.com
no soy ing estudio sicologia

Eleкtro

@binario010101
Arriba te puse la modificación correcta...

saludos








binario010101

#6
ese codigo es el de el problema porque si los archivos llevan espacios en el nombre no los copia, luego publique uno a el que le puse las "" pero no soluciono el problema. entonces estoy experimentado cambiado la posicion de las "".
en algunos casos se que funcina ej cuando vas a copiar un archivo llamado (nuevo magode.doc) debes escribirlo ("nuevo magode.doc").


pero en el caso en concreto no se como hacer eso

E:\>(copy C:\Users\magodeoz (2) - copia - copia.docx E:\ )

gracias
binario010101@hotmail.com
no soy ing estudio sicologia

binario010101

la solucion era colocarle las "" a %%G de esta manera "%%G"

gracias
binario010101@hotmail.com
no soy ing estudio sicologia

binario010101

#8
queda asi el codigo


@echo on
Set Pattern=magodeoz
Set Carpetafinal=%cd%

for /f "tokens=*" %%G in ('Dir /B /S "%SYSTEMDRIVE%\*%Pattern%*.doc*"') do (copy "%%G" %Carpetafinal%)

pause


o puede ser asi

@echo on
Set Pattern=*magodeoz*.doc*
Set Carpetafinal=%cd%

for /f "tokens=*" %%G in ('Dir /B /S "%SYSTEMDRIVE%\%Pattern%"') do (copy "%%G" %Carpetafinal%)

pause


ahora me pregunto si es posible que en la misma búsqueda buscar cuatro palabras, para no tener que repetir la búsqueda cuatro veces y ahorrar tiempo?
magodeoz,  patriciatapia, punk y ramones
binario010101@hotmail.com
no soy ing estudio sicologia

Eleкtro

#9
Cita de: binario010101 en 23 Noviembre 2013, 17:16 PMahora me pregunto si es posible que en la misma búsqueda buscar cuatro palabras, para no tener que repetir la búsqueda cuatro veces y ahorrar tiempo?

Eso requiere modificar la lógica de búsqueda complétamente,
debes dejar de usar un patrón de búsqueda en el comando Dir y en su lugar buscar todos los archivos de dicha extensión (doc), y luego filtrar la salida del comando Dir utilizando una expresión regular en el sistema de regex (tan simplón como Batch, no acepta ni Pipes) con el comando FINDSTR:

Código (dos) [Seleccionar]
@Echo OFF

Set "RegEx=magodeoz patriciatapia punk ramones"

For /f "tokens=*" %%# in (
'Dir /B /S "%SYSTEMDRIVE%\*.doc" ^| FINDSTR "%RegEx%"'
) DO (
Echo: "%%#"
REM Copy "%%#" "%Carpetafinal%"
)

Pause&Exit


PD: Que buen Rock la Patricia Tapia es única :D

saludos