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?
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!
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
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""
for /f "tokens=*" %%G in ('Dir /B /S "%SYSTEMDRIVE%\*%Pattern%*.doc"') do (copy "%%G" "%Carpetafinal%")
saludos
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
Arriba te puse la modificación correcta...
saludos
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
la solucion era colocarle las "" a %%G de esta manera "%%G"
gracias
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
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:
@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
hola gracias por tu codigo lo probé este es el resultado
E:\>Set "RegEx=magodeoz patriciatapia punk ramones"
E:\>For /F "tokens=*" %# in ('Dir /B /S "C:\*.doc"' | FINDSTR "ingles patricia")
DO (
Echo: "%#"
REM Copy "%#" ""
)
El sistema no puede encontrar el archivo 'Dir /B /S "C:\*.doc"' | FINDSTR "ingle
s patricia".
E:\>Pause
Presione una tecla para continuar . . .
buscado soluciones
el codigo anterior debe ser modificado para que busque palabras con asentos (óz)? observo que no copia los archivos con acentos como magodeóz entonces le coloque el hacento pero en la consola paracio fue ú. porque tengo que cambiar la codificacion?
@binario010101
Culpa mía, lo escribí al vuelo, me comí una comilla en la expresión del FOR, ya está corregido, vuelve a testear el código modificado de arriba
saludos
ahora si localiza los archivos pero no los copia.
E:\>Set "RegEx=magodeoz magodeóz patriciatapia punk ramones"
E:\>For /F "tokens=*" %# in ('Dir /B /S "C:\*.doc" | FINDSTR "magodeoz magodeóz patriciat
apia punk ramones"') DO (
Echo: "%#"
REM Copy "%#" E:\biblioteca\
)
E:\>(
Echo: "C:\Users\yo\Desktop\magodeoz.doc"
REM Copy "C:\Users\yo\Desktop\magodeoz.doc" E:\biblioteca\
)
"C:\Users\yo\Desktop\magodeoz.doc"
E:\>Pause
Presione una tecla para continuar . . .
agrege una nueva palabra a la busqueda. (magodeóz) pero no loscaliza los archivos con acentos. como aparece un simbolo rraro por el acento use este (?)
gracias
Cita de: binario010101 en 23 Noviembre 2013, 18:46 PM
ahora si localiza los archivos pero no los copia.
Porsupuesto, no los copia, es algo intencionádo.
Vuélvete a fijar mejor en el código... debajo de la linea del echo, hay una linea de comentario, descoméntala.
PD: Te recomiendo la lectura de cualquier manual básico de Batch
Saludos!
conoces una buena pagina donde leer todo sobre bat. e leido unas pero ya son muy repetidas
gracias
y ya borre las lineas
Cita de: binario010101 en 23 Noviembre 2013, 19:20 PM
conoces una buena pagina donde leer todo doble bat. e leino unas pero ya son muy repetidas
Este (http://ss64.com/nt/syntax.html), junto a
este (http://foro.elhacker.net/scripting/tema_bloqueado_hasta_finalizar_el_tuto_tutorial_extendido_de_aprendizaje_batch-t375135.0.html;msg1797907#msg1797907) otro.
saludos