batch file - programacion - Crear carpeta usando el archivo bat
crear archivo bat para ejecutar programa (9)
Necesito escribir un archivo bat que crea una nueva carpeta usando la fecha y hora actuales para el nombre de la carpeta. Se me ocurrió lo siguiente:
for /f "tokens=1-3 delims=:," %%i in ("%TIME%") do md %DATE%-%%i.%%j.%%k
¿Este código tiene algún defecto? ¿Hay una manera más fácil / más natural de hacerlo?
¿Lo has probado? Tu línea de comando arroja un error de mi lado.
Yo uso este bate
for /F "tokens=1-4 delims=. " %%i in (''date /t'') do (
set Day=%%i
set Month=%%j
set Year=%%k
)
for /F "tokens=1-4 delims=: " %%i in (''time /t'') do (
set Hour=%%i
set Minute=%%j
set Second=%%k
)
md %1/%Year%-%Month%-%Day%
Espero eso ayude.
No pude hacer funcionar muchos de los anteriores, sin embargo, utilicé el comando de carteles originales con éxito.
Aquí está mi versión:
para / f "tokens = 1-3 delims =: /" %% i in ("% DATE%") establece DATESTAMP = %% i. %% j. %% k
@echo Directory se hará con este nombre:
@echo backup.% DATESTAMP%
Copia de seguridad de md.% DATESTAMP%
@echo Directory made, ahora procediendo con la copia de archivo ...
@echo, asegúrese de que su PC no tenga correo electrónico ni ningún documento abierto.
pausa
copia de seguridad de CD.% DATESTAMP%
md "Documentos compartidos"
xcopy "c: / documents and settings / all users / documents / documents" "Documentos compartidos" / E / C / I / H / Q
@echo en documentos completos.
etc :)
¿No has intentado crear un nuevo creador de carpetas utilizando la fecha y la hora guardadas como new_folder_maker.bat con este código?
:start
@echo off
md new_folder_%date%_%time%
exit
Aquí está mi solución (modificada de lopkiju). Crea una carpeta usando una marca de fecha. Si ya existe una carpeta con ese nombre, agregue un número entero para que sea único. Ponlo en un archivo .bat y pasa la ruta a la carpeta principal.
Probado en Windows 7 Home Premium x64.
REM Create a folder using the current date. If such a folder already exists, append a number to make it unique.
@ECHO OFF
for /F "tokens=2-5 delims=/ " %%i in (''date /t'') do (
set Day=%%j
set Month=%%i
set Year=%%k
)
set Path=%~1/%Year%-%Month%-%Day%
set /a inx=2
:LOOP
IF NOT EXIST "%Path%" GOTO CREATE
set Path=%~1/%Year%-%Month%-%Day% (%inx%)
set /a inx+=1
if %inx% gtr 9 goto :END REM Eh, giving up.
goto LOOP
:END
:CREATE
md "%Path%"
:END
esto funciona bastante bien para mí
dkdir foldername
cd foldername
dkdir %date% %time%
cls
La razón por la cual un%% de tiempo simple no funciona es porque está separada por: lo cual no está permitido en el procesamiento por lotes. Pero este debería funcionar bien:
Funciona muy bien para mí.
Rem Get Day,Mth & Year from %Date%
set Day=%Date:~0,2%
set Mth=%Date:~3,2%
set Yr=%Date:~6,4%
REM Get Hour and Min from %Time%
set Hour=%Time:~0,2%
if "%hour:~0,1%" == " " set hour=0%hour:~1,1%
set Min=%Time:~3,2%
mkdir %date%-%hour%.%min%
Puede usar una subcadena y las variables integradas% DATE% y% TIME% para hacer esto:
@echo OFF
:: Use date /t and time /t from the command line to get the format of your date and
:: time; change the substring below as needed.
:: This will create a timestamp like yyyy-mm-dd-hh-mm-ss.
set TIMESTAMP=%DATE:~10,4%-%DATE:~4,2%-%DATE:~7,2%-%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%
@echo TIMESTAMP=%TIMESTAMP%
:: Create a new directory
md "%1/%TIMESTAMP%"
Puede aprovechar GNU sh-utils utilizando los especificadores de formato de date.exe
:
for /f "delims=" %%a in (''date.exe +%%Y-%%m-%%d.%%H-%%M'') do @set dd=%%a
md %dd%
Esta solución es especialmente importante para aquellos con versiones localizadas de Windows.
for
ciclo se ejecuta una vez, pero es necesario ya que no hay una forma más sencilla de asignar una variable con el valor tomado de la salida del comando.
Use date --help
para la lista completa de especificadores de formato.