Autor
|
Tema: almacenar el nombre de un directorio en una variable (Leído 3,637 veces)
|
vikyBatch
Desconectado
Mensajes: 3
|
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: MKDIR "D:\Documents\testbatch\temp" SET TEMPDossier="D:\Documents\testbatch\temp" :Check CD /D D:\Documents\testbatch CALL : fct_log_Texte INFO " dossier disponible %%x" :: Quote the variable and remove the ! FOR /F %%i in (' dir /b " D:\Documents\testbatch\ %VarDossier%\*"' ) do ( MOVE /Y " D:\Documents\testbatch\ %VarDossier%\ %%i" " %TEMPDossier%\ %rename%_ %%i" 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
Mensajes: 9.878
|
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: @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
Mensajes: 3
|
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
Mensajes: 9.878
|
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: Set "rename=!VarDossier!" O en su defecto, con el comando Call: Call Set "rename=%%VarDossier%%" Slaudos
|
|
|
En línea
|
|
|
|
vikyBatch
Desconectado
Mensajes: 3
|
Muchas gracias por los consejos voy a probar.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
almacenar nombre ventana
Programación Visual Basic
|
rubeng
|
5
|
2,353
|
10 Agosto 2006, 20:48 pm
por -POLACO-
|
|
|
Almacenar fecha y hora de creacion en una variable
Scripting
|
henry7512
|
3
|
2,946
|
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,318
|
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
|
19,919
|
8 Julio 2008, 17:48 pm
por Coegho
|
|
|
Almacenar nombre de un archivo en una variable [BATCH]
Scripting
|
cat26
|
3
|
7,158
|
4 Octubre 2018, 05:33 am
por cat26
|
|