elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  almacenar el nombre de un directorio en una variable
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: almacenar el nombre de un directorio en una variable  (Leído 3,666 veces)
vikyBatch

Desconectado Desconectado

Mensajes: 3


Ver Perfil
almacenar el nombre de un directorio en una variable
« en: 15 Julio 2015, 00:38 am »

buenas a todos

necesito hacer un fragmento de código en batch que busque los nombres de las carpetas ( las subcarpetas que contengan *_C_*) y que almacene el nombre en una variable para poder trabajar con ella, necesito  almacenar el nombre  para  poder modificarlo en caso de que  tenga caracteres especiales  y  anadir ese nombre a cada fichero de la subcarpeta.

después de pasarme un buen rato intentando hacerlo sin éxito al final me he quedado sin ideas, lo estoy intentando con un for, pero  ni modo, ¿a alguien se le ocurre algo?

mi código:

Código
  1. MKDIR "D:\Documents\testbatch\temp"  
  2. SET TEMPDossier="D:\Documents\testbatch\temp"  
  3. :Check  
  4. CD /D D:\Documents\testbatch  
  5. FOR /D %%x in (*_C_* ) do (  
  6. CALL :fct_log_Texte INFO  " dossier disponible %%x"  
  7. setlocal enabledelayedexpansion  
  8. SET VarDossier= %%x  
  9. ECHO !VarDossier!  
  10. SET rename=!VarDossier!  
  11. echo %rename%  
  12. :: Quote the variable and remove the !  
  13. Set rename="%rename:!=%"
  14. Setlocal EnableDelayedExpansion
  15. For %%J In (^| ^& ^< ^> ^^ + ^( ^) \ / . @ # $ { } [ ] ' ; : , ? ` ^%% ^") Do (Set rename=!rename:%%J=!)
  16. FOR /F %%i in ('dir /b " D:\Documents\testbatch\%VarDossier%\*"') do (
  17. MOVE /Y " D:\Documents\testbatch\%VarDossier%\%%i" "%TEMPDossier%\%rename%_%%i"
  18. dir /b /a " D:\Documents\testbatch\%VarDossier%\*" | >nul findstr "^" && (call :DirectoryEmpty) || (call :Check)


« Última modificación: 15 Julio 2015, 00:40 am por Eleкtro » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: almacenar el nombre de un directorio en una variable
« Respuesta #1 en: 15 Julio 2015, 01:20 am »

1. Usa las etiquetas para insertar código, lee mi firma.

2. ¿Qué problema tienes exactamente con el código que has mostrado?, intenta ser específico.

3. ¿Qué hay de los métodos fct_log_Texte y DirectoryEmpty?, no aparecen en el código.

4. Por defecto Windows no permite utilizar ciertos caracteres especiales al nombrar directorios/archivos, puedes descartar muchos caracteres innecesarios del For para aumentar el rendimiento.

5. El último For del código que has mostrado, tiene la agrupación abierta, por lo que dará error de sintaxis.

Prueba de la siguiente manera:
Código:
@Echo OFF & Setlocal EnableDelayedExpansion

Set "sourceDirPath=C:\Users\"
Set "dirNamePattern=_C_"
(MKDir "%srcDir%")2>Nul


For /D /R "C:\users" %%# In ("*%dirNamePattern%*") Do (

(Echo "%%~nx#" | findstr "[\+\(\)\@\#\$\{\}\[\]\'\;\,\`\&\%%\^\.]")1>Nul 2>&1 && (
Call :DirtyWork "%%~nx#" "%%~f#"
)

)

Pause&Exit /B 0


:DirtyWork :: %1=Directory Name, %2=Directory Path

Set "renamedName=%~1"

For %%# In ("+","(",")","@","#","$","{","}","[","]","'",";",",","`","&","%%","^") Do (
Set "renamedName=!renamedName:%%~n#=!"
) & Set "renamedName=!renamedName:.=!"

Echo: Dir Name: "%~1"
Echo: Rename  : "!renamedName!"
Goto :EOF

Saludos!


« Última modificación: 15 Julio 2015, 01:49 am por Eleкtro » En línea



vikyBatch

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: almacenar el nombre de un directorio en una variable
« Respuesta #2 en: 15 Julio 2015, 08:02 am »

muchas gracias   por respoder , en realidad  no está todo  el código.
Aclaraciones:
 fct_log_Texte y DirectoryEmpty son 2 funciones, el primero  nos permite crear  un log  y  el segundo cunao hacer alggo específico cuando la carpeta está vacia.
zipper&tom, es  otra funcion que  hace  otra cosa.

mi intención es, desde un carpeta concreta buscar  todas lass subcarpetas que contenga  una *_C_*  , vérificar que no tengan caracteres speciales como nombre de subcarpeta, en el caso de contener algún caracter  extraño , suprimirlo los  caracteres especiales del nombre de supcartepa,  luego  utlizar ese nombre (modificado o no ) y añadir el  nombre a todos  sus ficheros.
cuando las  variables están en  duro  funciona, pero  cuando  quiero almacenar el valor  en una variable desde  un for, no puedo, mis  variables   "set VarDossier=%%x" y " SET rename=%VarDossier%" están vacias


« Última modificación: 17 Julio 2015, 01:19 am por vikyBatch » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: almacenar el nombre de un directorio en una variable
« Respuesta #3 en: 17 Julio 2015, 21:52 pm »

cuando  quiero almacenar el valor  en una variable desde  un for, no puedo, mis  variables   "set VarDossier=%%x" y " SET rename=%VarDossier%" están vacias

Dentro del bloque de un For, debes hacer uso de la expansiónd e variables:
Código:
Set "rename=!VarDossier!"

O en su defecto, con el comando Call:
Código:
Call Set "rename=%%VarDossier%%"

Slaudos
En línea



vikyBatch

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: almacenar el nombre de un directorio en una variable
« Respuesta #4 en: 21 Julio 2015, 00:56 am »

Muchas gracias  por los consejos  voy a probar.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
almacenar nombre ventana
Programación Visual Basic
rubeng 5 2,375 Último mensaje 10 Agosto 2006, 20:48 pm
por -POLACO-
Almacenar fecha y hora de creacion en una variable
Scripting
henry7512 3 2,975 Último mensaje 18 Abril 2007, 02:33 am
por sirdarckcat
¿como almacenar el resultado de una query en una variable?
.NET (C#, VB.NET, ASP)
thecirujano 3 7,333 Último mensaje 11 Octubre 2007, 06:35 am
por Hadess_inf
[batch]Almacenar el contenido de un archivo .txt en una variable. « 1 2 »
Scripting
MK-Ultra 17 20,013 Último mensaje 8 Julio 2008, 17:48 pm
por Coegho
Almacenar nombre de un archivo en una variable [BATCH]
Scripting
cat26 3 7,288 Último mensaje 4 Octubre 2018, 05:33 am
por cat26
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines