aichiyu 发表于 2021-11-24 18:44

分享自用bat批量处理 文件改名 移动文件 分批文件

当前子目录文件移动到目录
for /f "tokens=* delims=" %%i in ('dir /b /a-d /s "*"') do (move "%%i" "%%~dpi./../")

pause

添加其所在文件夹的名称前缀
@echo off
rem 在多个子文件夹里的jpg文件的名称前面/开头添加其所在文件夹的名称前缀
mode con lines=3000

set "folder=D:\天翼云盘下载\新建文件夹"
if not exist "%folder%" (echo;"%folder%" no found&goto end)
if "%folder:~-1%" equ "\" set "folder=%folder:~,-1%"
for /f "delims=" %%a in ('dir /ad/b "%folder%\"') do (
    pushd "%folder%\%%~nxa\"
    for /f "delims=" %%b in ('dir /a-d/b *.jpg 2^>nul') do (
      echo;"%%~nxa\%%~nxb" --^> "%%~nxa_%%~nxb"
      ren "%%b" "%%~nxa_%%~nxb"
    )
    popd
)
:end
echo;%#% +%$%%$%/%@% %z%
pause
exit

文件新建文件夹并取名
md tbwind
for %%f in (*.*) do md tbwind\%%f
for %%f in (*.*) do move %%f tbwind\%%f\
xcopy tbwind\*.* /s
rd tbwind /s/q

去掉小箭头
/* ---去掉小箭头----*/
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons" /v 29 /d "%systemroot%\system32\imageres.dll,197" /t reg_sz /f
taskkill /f /im explorer.exe
attrib -s -r -h "%userprofile%\AppData\Local\iconcache.db"
del "%userprofile%\AppData\Local\iconcache.db" /f /q
start explorer
pause
复制上面的代码。新建一个文本文件。粘贴后另存为.bat文件,然后以管理员身份打开。
ok!
/* ---恢复小箭头----*/
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons" /v 29 /f
taskkill /f /im explorer.exe
attrib -s -r -h "%userprofile%\AppData\Local\iconcache.db"
del "%userprofile%\AppData\Local\iconcache.db" /f /q
start explorer
Pause
同理,将上述代码另存为.bat文件,管理员身份打开。就可恢复小箭头了。

目录中文件移出
@echo off
set son=%cd%
@rem 获取上级目录,暂时没使用到
pushd %son%
cd ..
set parent=%cd%
popd

for /d %%i in (*) do (
move /y %son%\%%i\*.* %son%
rd %son%\%%i
)
@Rem pause

清理文件
@echo off
pause
echo 正在清理系统垃圾文件,请稍等......
del /f /s /q %systemdrive%\*.tmp
del /f /s /q %systemdrive%\*._mp
del /f /s /q %systemdrive%\*.log
del /f /s /q %systemdrive%\*.gid
del /f /s /q %systemdrive%\*.chk
del /f /s /q %systemdrive%\*.old
del /f /s /q %systemdrive%\recycled\*.*
del /f /s /q %windir%\*.bak
del /f /s /q %windir%\prefetch\*.*
rd /s /q %windir%\temp & md %windir%\temp
del /f /q %userprofile%\cookies\*.*
del /f /q %userprofile%\recent\*.*
del /f /s /q "%userprofile%\Local Settings\Temporary Internet Files\*.*"
del /f /s /q "%userprofile%\Local Settings\Temp\*.*"
del /f /s /q "%userprofile%\recent\*.*"
echo 清理系统垃圾完成!
echo. & pause

win10图片查看器
Windows Registry Editor Version 5.00
; Change Extension's File Type

@="PhotoViewer.FileAssoc.Tiff"
; Change Extension's File Type

@="PhotoViewer.FileAssoc.Tiff"
; Change Extension's File Type

@="PhotoViewer.FileAssoc.Tiff"
; Change Extension's File Type

@="PhotoViewer.FileAssoc.Tiff"
; Change Extension's File Type

@="PhotoViewer.FileAssoc.Tiff"
; Change Extension's File Type

@="PhotoViewer.FileAssoc.Tiff"
; Change Extension's File Type

@="PhotoViewer.FileAssoc.Tiff"


多文件批量分成多个小文件夹
@echo off&setlocal enabledelayedexpansion
::文件分类管理:按每5个文件装进一个文件夹整理。move为移动 copy为复制
echo;&echo;    开始整理……&echo;
set newf=0
set numf=0
set conf=0
if not exist New!newf! md New!newf!
for /f "tokens=*" %%a in ('dir /b /a-d') do (
    if !numf! geq 5 set numf=0&set /a newf+=1&md New!newf!
    if not "%%~na"=="%~n0" move "%%~a" New!newf!&set /a numf+=1
    set /a conf=!newf!*5+!numf!
)
echo;&echo;    整理完成,共 !conf! 个文件,请注意检查!&pause>nul

arrymarry 发表于 2021-11-25 14:05

柠檬派 发表于 2021-11-25 13:06
楼主能帮忙写一个批处里吗?
以管理员方式运行bat,
bat内容是从B文件夹(\\10.142.164.240【账号密码都是 ...


转载论坛大佬写的,找不到地址了。你可以试试这个

import hashlib
def md5(file_path):
#------判断文件的MD5-------↓
    if os.path.isdir(file_path):
      return '1'
    read_file=open(file_path,mode='r',errors='ignore')

    the_hash=hashlib.md5()
    for line in read_file.readlines():
      the_hash.update(line.encode('utf8'))
    read_file.close()
    return the_hash.hexdigest()


import os
import shutil
def directory(dir_name1,dir_name2):#同步目录 备份目录
#-------克隆同步目录结构到备份目录--------↓
    dir1_list=[]
    for path,dirs,files in os.walk(dir_name1):
      # print(path,dirs,files)
      dir1_list.append(path)
    a=len(dir1_list[0])
    for i in range(len(dir1_list)):
      if os.path.exists(dir_name2+dir1_list) is False:
            os.mkdir(dir_name2+dir1_list)
    dir2_list=[]
    for path,dirs,files in os.walk(dir_name2):
      dir2_list.append(path)
    a=len(dir2_list[0])
    for i in range(len(dir2_list)):
      if os.path.exists(dir_name1+dir2_list) is False:
            os.rmdir(dir2_list)
#-------判断同步目录哪些文件变更,复制到备份目录--------↓
    dir1_root=None
    for path,dirs,files in os.walk(dir_name1):
      if dir1_root is None:
            dir1_root=path
      trimmed_path=path[len(dir1_root):]
      # print(trimmed_path,files)
      if files!=[]:
            for i in range(len(files)):
                file1=os.path.join(dir_name1+trimmed_path+os.path.sep,files)
                file2=os.path.join(dir_name2+trimmed_path+os.path.sep,files)
                if os.path.exists(file2) is True:
                  if md5(file1) != md5(file2):
                        shutil.copy(file1,file2)
                else:
                  shutil.copy(file1,file2)                  
#-------删除备份目录比同步目录多出来的文件--------↓
    dir2_root=None
    for path,dirs,files in os.walk(dir_name2):
      if dir2_root is None:
            dir2_root=path
      trimmed_path=path[len(dir2_root):]
      #print(trimmed_path,files)
      if files!=[]:
            for i in range(len(files)):
                if os.path.exists(dir_name1+trimmed_path+os.path.sep+files) is False:
                  os.remove(dir_name2+trimmed_path+os.path.sep+files)


directory('//10.142.164.240/','D:\\A')

fenghuazhengmao 发表于 2021-11-24 22:02

guols-cracker 发表于 2021-11-24 20:14
楼主能帮忙写一个批处里吗?
在指定的路径文件夹里,搜索指定的文件是否存在,并提示忽略或删除

我今天照着网上写了一个,自动删除服务器日志文件夹里的.log文件,明天回您

DA111 发表于 2021-11-24 18:48

顶一下!!!

Eaglecad 发表于 2021-11-24 18:50

不错,可以参考,感谢

侃遍天下无二人 发表于 2021-11-24 18:52

天哪,我还是写代码实现吧,还是更习惯python脚本或nodejs

红蓝黄 发表于 2021-11-24 19:22

这个真不错

heng179 发表于 2021-11-24 19:27

zhlezhi 发表于 2021-11-24 19:49

非常喜欢批处理,但一直没遇到好的教学方式,感谢分享成品,且都是工作实务中需要的

unmask 发表于 2021-11-24 19:50

非常实用的批处理,谢谢分享

linzilinzi 发表于 2021-11-24 19:59

非常实用的分享{:1_893:}{:1_893:}{:1_893:}谢谢

guols-cracker 发表于 2021-11-24 20:14

楼主能帮忙写一个批处里吗?
在指定的路径文件夹里,搜索指定的文件是否存在,并提示忽略或删除
页: [1] 2 3 4 5
查看完整版本: 分享自用bat批量处理 文件改名 移动文件 分批文件