Board logo

标题: [文件操作] 批处理怎样删除子目录同名文件? [打印本页]

作者: iii888iii    时间: 2022-4-15 09:44     标题: 批处理怎样删除子目录同名文件?

指定一个文件夹

该文件夹,根目录有一个xlsx文件

1,获取名称

5-1案例4(注)_中文_2011年04月18日01时45分_中文_中文_663793_180403_298[忽略].xlsx

注:文件名称不确定
获取得到的名称:  5-1案例4(注)_中文_2011年04月18日01时45分_中文_中文_663793_180403_298[忽略].xlsx



2,查找多个子目录是否有相同的文件,如果有,仅删除"子目录"的相同文件. 注:子目录文件名称不确定
保留:根目录文件

补充说明了一下.
有朋友会弄吗
作者: 5i365    时间: 2022-4-15 10:35

回复 1# iii888iii

另存为ANSI编码的BAT文件,
放到要处理的文件夹的同一文件夹执行(不要放到目录里)

  
  1. #@&cls&powershell "gc '%~f0'|out-string|iex"&pause&exit
  2. $Folder = "B" #指定文件夹名
  3. $File = "5-1案例4(注)_中文_2011年04月18日01时45分_中文_中文_663793_180403_298[忽略].xlsx" #指定Xlsx文件名
  4. cd ".\$Folder"
  5. gci -Filter $File -rec | ? { $_.DirectoryName -ne $PWD } | del
复制代码

作者: iii888iii    时间: 2022-4-15 10:43

回复 2# 5i365


  文件名是这个,可以删除,时间10多秒.

不过,   文件名,是不确定的,要获取...   文件夹名称也要获取.  是我没说清,

还是要说感谢.
作者: 5i365    时间: 2022-4-15 10:48

本帖最后由 5i365 于 2022-4-15 10:49 编辑

回复 3# iii888iii


   只有一个xlsx文件? 如果只有一个, 可以用下面的代码
作者: 5i365    时间: 2022-4-15 10:48

回复 3# iii888iii


  
  1. #@&cls&powershell "gc '%~f0'|out-string|iex"&pause&exit
  2. $Folder = "B" #指定文件夹名
  3. cd ".\$Folder"
  4. $File = (gi *.xlsx).Name
  5. gci -Filter $File -rec | ? { $_.DirectoryName -ne $PWD } | del
复制代码

作者: 5i365    时间: 2022-4-15 10:53

本帖最后由 5i365 于 2022-4-15 11:19 编辑

回复 3# iii888iii


文件夹如果也需要获取, 也获取xlsx, 把这个BAT放到要处理的文件夹里执行

  1. #@&cls&powershell "gc '%~f0'|out-string|iex"&pause&exit
  2. (gci '*.xlsx').name |
  3. %{
  4. gci -Filter $_ -rec | ? { $_.DirectoryName -ne $PWD } | del
  5. }
复制代码

作者: qixiaobin0715    时间: 2022-4-15 10:59

  1. @echo off
  2. cd "指定文件夹"
  3. for %%a in (*.xlsx) do (
  4.     for /d %%i in (*) do (
  5.         pushd "%%i"
  6.         for /f "delims=" %%j in ('dir /s /b /a-d "%%a"') do del "%%j"
  7.         popd
  8.     )
  9. )
  10. pause
复制代码

作者: iii888iii    时间: 2022-4-15 11:11

感谢大家   2个代码都可以实现.   qixaobin0715  效率高,
作者: Batcher    时间: 2022-4-15 13:28

回复 7# qixiaobin0715
  1. @echo off
  2. cd /d "%~dp0"
  3. for %%a in (*.xlsx) do (
  4.     for /d %%i in (*) do (
  5.         del /s /f /q "%%i\%%a"
  6.     )
  7. )
复制代码

作者: qixiaobin0715    时间: 2022-4-15 13:54

回复 9# Batcher
del /s /f /q "%%i\%%a"
原来非完整路径也行啊!!!学到了。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2