我运行xcopy
命令将一个文件传输到另一个文件。
xcopy /s "c:\users\documents\thisfile.txt" "d:\otherfiles\1.2.1"
我希望能够仅将文件复制到otherfiles
目录中的最新文件夹中,而不是每次创建新版本文件夹时都对其进行硬编码。这些是版本号,并且这些数字只会增加。
这完全可能吗?
答案 0 :(得分:1)
好的,可以检查目录的版本,但这将花费更多的代码,因为我们不能简单地删除点以获取数值并与下一个进行比较。原因是,考虑到版本1.2.3
和1.23
,如果我们删除点使其成为可匹配的数值,则它们最终都将成为123
,因此每个版本部分都必须是经过测试。
但是,基于对我的问题的评论,您将新版本创建为文件夹,并且因此可以按日期排序,因此只需运行dir
命令并按创建日期排序即可。它将最新文件夹设置为您所需的变量:
@echo off
for /f "delims=" %%i in ('dir /b /ad /o:d D:\otherfiles') do set "myvar=%%i"
xcopy /s "c:\users\documents\thisfile.txt" "d:\otherfiles\%myvar%"
答案 1 :(得分:1)
如果您想在PowerShell中执行此操作,则可以。这将需要PowerShell 3.0或更高版本。可以使用2.0完成,但是需要进行更改。希望您已打开或可以升级到现代版本的PowerShell。
当您确信文件将被正确复制时,请从-WhatIf
cmdlet中删除Copy-Item
。
$fn = 'C:/src/t/xxx.txt'
$destbasedir = 'C:/src/t/lastdir'
Get-ChildItem -Directory -Path $destbasedir |
Sort-Object -Property Name |
Select-Object -Last 1 |
ForEach-Object { Copy-Item -Path $fn -Destination $_.FullName -Whatif }
可以将其放入.bat文件脚本中。
SET "FN=C:\src\t\xxx.txt"
SET "DESTBASEDIR=C:\src\t\lastdir"
powershell -NoProfile -Command ^
"Get-ChildItem -Directory -Path %DESTBASEDIR% |" ^
"Sort-Object -Property Name |" ^
"Select-Object -Last 1 |" ^
"ForEach-Object { Copy-Item -Path "%FN%" -Destination "$_.FullName" -Whatif }"