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

[文件操作] [已解决]求powershell或bat 解决文件拷贝问题

本帖最后由 realchris 于 2015-4-9 08:57 编辑

电脑上有A、B两个文件夹,A文件夹中的文件名都是8位长的,且第8位不是"s",就是"d"。
如果A文件夹中有两个文件,文件名前7位相同,最后一位分别是s和d,则看做是一对。
例如A文件夹中的文件“1111111s.txt、1111111d.txt”是一对,"2222222s.txt、2222222d.txt"是一对,"kkkkkkks.txt、kkkkkkkd.txt"是一对。。。。
但是也有不是一对的:像是单独的*s.txt或*d.txt(同样文件名长8位)。
要求:
把一对对的文件从A文件夹拷贝到B文件夹中,单独的*s.txt或*d.txt则不拷贝

追加:
拷贝的时候,如果B文件夹中已存在相同文件,则不覆盖
(因为A中的文件很多很大,每次都覆盖的话要花很长时间)

新人求助,请各位帮帮我吧!~
谢谢!!!!
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

没学过编程伤不起啊,求助~
个人的思路:

使用get-childitem来获取文件夹下面的子文件夹和文件
然后,使用foreach-object的cmdlet来循环遍历下面的子对象。
然后,通过psiscontainer 属性来判断是文件夹还是文件
如果是文件的话,
定义一个变量到文件名,像是 “变量s.txt”
然后用Test-Path,检查“变量d.txt”是否存在,
如果 “变量d.txt”存在,
则用Copy-Item复制这两个文件到另个文件夹
如果文件已存在则跳过

TOP

本帖最后由 pcl_test 于 2015-4-8 17:09 编辑

放进A文件夹里运行
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%a in (*.txt) do (
  4. set t=%%~na
  5. if exist "!t:~,-1!s.txt" if exist "!t:~,-1!d.txt" (echo n | copy "!t:~,-1!*.txt" "D:\B\" /-y)
  6. )
  7. pause
复制代码
1

评分人数

TOP

  1. *s.txt
复制代码
  1. *.txt
复制代码
更有效率,且无需两个判断。
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

回复 4# xxpinqz
说的是呢

TOP

多谢楼上的大神!可以了!太感谢啦~

TOP

返回列表