[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 【已解决】求助按时间变量批量复制文件到另一个文件夹

本帖最后由 jave000 于 2022-7-3 15:12 编辑

同类搜索简述:
按创建和修改时间将一批文件,从一个文件夹批量复制到另一个文件夹,并且两个文件夹的路径中间都有一个变量,需要手动输入,以及其中一个路径涉及到桌面,但为了可以分享给同事使用,识别任意电脑名下的桌面路径。
感谢楼下诸位

@powershell -c "Get-Content '%~0' | Select-Object -Skip 1 | Out-String | Invoke-Expression" & exit /b
$j = read-host "Project Model Folder"
$C = [Environment]::GetFolderPath("Desktop")
$sour = "\\s1\$j\3\ed\","\\s1\$j\3\pd\"
$dest = "$C\S\$j\"
do
{
    $minute = read-host "Minutes of Minutes"
    $minute = $minute.trim()
}
while ($minute -match "\D")
Get-ChildItem -Path $sour -File |
    Where-Object { ($_.CreationTime -gt (get-date).AddMinutes(-$minute)) -or ($_.LastWriteTime -gt (get-date).AddMinutes(-$minute)) } |
    foreach-object {
        write-host $_.fullname
        copy-item $_.fullname -Destination $dest
    }

本帖最后由 idwma 于 2021-7-11 19:48 编辑

@echo off&setlocal enabledelayedexpansion
set/p XXX=输入XXX具体名称
set/a tn=10000!time:~0,2!*60+10000!time:~3,2!
set/p t=填写分钟数:
set/a t=!tn!-!t!
set "p1=\\btssvr9\pds1\!XXX!\3d\eqp_dgn"
set "p2=\\btssvr9\pds1\!XXX!\3d\eqp_dgn"
set "d=!USERPROFILE!\Desktop\SPR\!XXX!"
for %%a in (%p1% %p2%) do (
        for /f "tokens=1,2,4* delims= " %%i in ('dir/a-d "%%a" ^|findstr "^[0-9]"') do (
                set tf=%%j
                set/a tf=10000!tf:~0,2!*60+10000!tf:~3,2!
                if "!date:~0,10!" == "%%i" if "!tf!" gtr "!t!" echo copy "%%a\%%k" "!d!" /y &rem 测试看完输出把前面的echo删了
        )
)
pause
1

评分人数

TOP

powershell
  1. $sour = "D:\New folder","D:\2"
  2. $dest = "x:\"
  3. do
  4. {
  5.     $minute = read-host "多少分钟之内"
  6.     $minute = $minute.trim()
  7. }
  8. while ($minute -match "\D")
  9. Get-ChildItem -Path $sour -File |
  10.     Where-Object {$_.CreationTime -gt (get-date).AddMinutes(-$minute)} |
  11.     copy-item $_.fullname -Destination $dest
复制代码
1

评分人数

TOP

回复 2# idwma


    没有结果
Missing operator.

TOP

回复 3# newswan


    没有结果

TOP

回复 4# jave000


    是修改了之后运行的吗
1

评分人数

TOP

本帖最后由 newswan 于 2021-7-13 13:45 编辑

回复 3# newswan
  1. $sour = "D:\~","\\PC\Downloads"
  2. $dest = "D:\xxx"
  3. do
  4. {
  5.     $minute = read-host "多少分钟之内"
  6.     $minute = $minute.trim()
  7. }
  8. while ($minute -match "\D")
  9. Get-ChildItem -Path $sour -File |
  10.     Where-Object {$_.CreationTime -gt (get-date).AddMinutes(-$minute)} |
  11.     foreach-object {
  12.         write-host $_.fullname
  13.         copy-item $_.fullname -Destination $dest
  14.     }
复制代码
CreationTime  创建时间
LastWriteTime  最后更新时间
1

评分人数

TOP

回复 6# idwma


    是的
我把中文部分改了英文,因为我们系统只能是英文系统,中文是乱码
然后删除了
&rem 测试看完输出把前面的echo删了
其他没改,出来报错就是那样了

TOP

本帖最后由 idwma 于 2021-7-12 18:14 编辑

回复 8# jave000

%time%变量,小时数是个位时不显示0,换个方法获得当前时间
@echo off&setlocal enabledelayedexpansion
set/p XXX=输入XXX具体名称
set/p t=填写分钟数:
for /f "tokens=1,2 delims=: " %%i in ('time/t') do set/a tn=10000%%i*60+10000%%j
set/a t=!tn!-!t!
set "p1=\\btssvr9\pds1\!XXX!\3d\eqp_dgn"
set "p2=\\btssvr9\pds1\!XXX!\3d\eqp_dgn"
set "d=!USERPROFILE!\Desktop\SPR\!XXX!"
for %%a in (%p1% %p2%) do (
        for /f "tokens=1,2,4* delims= " %%i in ('dir/a-d "%%a" ^|findstr "^[0-9]"') do (
                set tf=%%j
                set/a tf=10000!tf:~0,2!*60+10000!tf:~3,2!
                if "!date:~0,10!" == "%%i" if "!tf!" gtr "!t!" echo copy "%%a\%%k" "!d!" /y &rem 测试看完输出把前面的echo删了
        )
)
pause
1

评分人数

TOP

回复 9# idwma


     还是没有反应,是否网盘目录不支持?但网盘目录我们手动复制是有权限的

TOP

回复 10# jave000

手动执行dir \\btssvr9\pds1\!XXX!\3d\eqp_dgn看有结果出来吗

TOP

回复 11# idwma


    有的,显示了文件夹内所有文件以及具体到日分秒的列表

TOP

回复 12# jave000


    那在提示填写分钟数的时候输个大点的数比如1440看有反应吗

TOP

回复 13# idwma


    还是没有,我把三个目录都改成了具体目录,也没结果

TOP

回复 14# jave000


    难道英文系统的时间格式显示和中文不一样?,可以发一部分dir/a-d \\btssvr9\pds1\!XXX!\3d\eqp_dgn的结果出来看一下吗

TOP

返回列表