Dev*_*rin 67 batch-file forfiles
我需要将目录中的最新文件复制到新位置.到目前为止,我已经找到了forfiles命令的资源,这里有一个与日期相关的问题,以及另一个相关的问题.我只是把这些碎片放在一起有点麻烦!如何将该目录中的最新文件复制到新位置?
Chr*_*son 128
接受的答案给出了在命令中使用最新文件然后退出的示例.如果需要在包含其他复杂操作的bat文件中执行此操作,可以使用以下命令将最新文件的文件名存储在变量中:
FOR /F "delims=|" %%I IN ('DIR "*.*" /B /O:D') DO SET NewestFile=%%I
Run Code Online (Sandbox Code Playgroud)
现在,您可以在bat文件的其余部分中引用%NewestFile%.
例如,以下是我们用来从目录中获取最新版本的数据库.bak文件,将其复制到服务器,然后还原db:
:Variables
SET DatabaseBackupPath=\\virtualserver1\Database Backups
echo.
echo Restore WebServer Database
FOR /F "delims=|" %%I IN ('DIR "%DatabaseBackupPath%\WebServer\*.bak" /B /O:D') DO SET NewestFile=%%I
copy "%DatabaseBackupPath%\WebServer\%NewestFile%" "D:\"
sqlcmd -U <username> -P <password> -d master -Q ^
"RESTORE DATABASE [ExampleDatabaseName] ^
FROM DISK = N'D:\%NewestFile%' ^
WITH FILE = 1, ^
MOVE N'Example_CS' TO N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Example.mdf', ^
MOVE N'Example_CS_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Example_1.LDF', ^
NOUNLOAD, STATS = 10"
Run Code Online (Sandbox Code Playgroud)
Pab*_*loG 68
Windows外壳,一个内胆:
FOR /F %%I IN ('DIR *.* /B /O:-D') DO COPY %%I <<NewDir>> & EXIT
Run Code Online (Sandbox Code Playgroud)
Tim*_*ica 11
要允许它使用空格处理文件名,需要修改后的答案版本:
FOR /F "delims=" %%I IN ('DIR . /B /O:-D') DO COPY "%%I" <<NewDir>> & GOTO :END
:END
Run Code Online (Sandbox Code Playgroud)
@echo off
set source="C:\test case"
set target="C:\Users\Alexander\Desktop\random folder"
FOR /F "delims=" %%I IN ('DIR %source%\*.* /A:-D /O:-D /B') DO COPY %source%\"%%I" %target% & echo %%I & GOTO :END
:END
TIMEOUT 4
Run Code Online (Sandbox Code Playgroud)
我尝试从文件夹中复制最新文件
只需设置您的源和目标文件夹,它应该可以工作
这个忽略文件夹,只关心文件
推荐您选择在DIR路径文件类型改变*.*
到*.zip
例如
我认为 TIMEOUT 在 winXP 上不起作用