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

[文件管理] 批处理实现畸形文件、文件夹创建、访问、重命名、删除

【方案一】以点结尾的文件夹
  1. rem 创建以点结尾的文件夹
  2. md "C:\test"
  3. md "C:\test\batcher..\"
复制代码
  1. rem 把以点结尾的文件夹重命名为普通文件夹
  2. rem 短文件名可以使用 dir /x 命令获得
  3. ren "C:\test\BATCHE~1" "batcher"
复制代码
  1. rem 把普通文件夹重命名为以点结尾的文件夹
  2. ren "C:\test\batcher" "batcher../"
复制代码
  1. rem 打开以点结尾的文件夹
  2. start "" "C:\test\batcher..\"
复制代码
  1. rem 进入以点结尾的文件夹
  2. rem 短文件名可以使用 dir /x 命令获得
  3. cd "C:\test\NEW~1"
复制代码
  1. rem 向以点结尾的文件夹中复制文件
  2. copy "C:\test\a.txt" "C:\test\batcher..\"
复制代码
  1. rem 删除以点结尾的文件夹中的文件
  2. rem 短文件名可以使用 dir /x 命令获得
  3. del /a /f /q "C:\test\NEW~1\a.txt"
复制代码
  1. rem 修改以点结尾的文件夹的属性为“隐藏”
  2. @echo off
  3. set DstFolder=C:\test\batcher.
  4. >"%temp%\FolderProperty.vbs" echo Set objFSO = CreateObject("Scripting.FileSystemObject").GetFolder("\\?\%DstFolder%.\")
  5. >>"%temp%\FolderProperty.vbs" echo objFSO.Attributes=objFSO.Attributes+2
  6. cscript /nologo "%temp%\FolderProperty.vbs"
复制代码
  1. rem 删除以点结尾的文件夹
  2. rd /s /q "C:\test\batcher..\"
复制代码
【方案二】以空格结尾的文件夹
  1. 基本操作与方案一大致相同,此处不再赘述。
复制代码
【方案三】系统保留字文件夹(Con, Prn, Aux, Nul, Lpt1, Com1, Com2)
  1. rem 创建系统保留字文件夹
  2. md "C:\test\batcher"
  3. md "C:\test\batcher\con\"
复制代码
  1. rem 打开系统保留字文件夹
  2. start "" "C:\test\batcher\con\"
复制代码
  1. rem 向系统保留字文件夹中复制文件
  2. copy "C:\test\batcher\a.txt" "C:\test\batcher\con\"
复制代码
  1. rem 删除系统保留字文件夹中的文件
  2. del /a /f /q "C:\test\batcher\con\a.txt"
复制代码
  1. rem 修改系统保留字文件夹的属性为“隐藏”
  2. @echo off
  3. set DstFolder=C:\test\batcher\con
  4. >"%temp%\FolderProperty.vbs" echo Set objFSO = CreateObject("Scripting.FileSystemObject").GetFolder("\\?\%DstFolder%.\")
  5. >>"%temp%\FolderProperty.vbs" echo objFSO.Attributes=objFSO.Attributes+2
  6. cscript /nologo "%temp%\FolderProperty.vbs"
复制代码
  1. rem 删除系统保留字文件夹
  2. rd /s /q "C:\test\batcher\con\"
复制代码
【方案四】特殊字符文件夹(\, /, :, *, ?, ", <, >, |)
  1. rem 创建特殊字符文件夹
  2. @echo off
  3. set "DstFolder=C:\test\batcherA\"
  4. if exist "%DstFolder%\" (
  5.   echo 文件夹%DstFolder%已存在
  6.   goto :eof
  7. )
  8. md "%DstFolder%"
  9. >"%DstFolder%\desktop.ini" echo [.ShellClassInfo]
  10. >>"%DstFolder%\desktop.ini" echo LocalizedResourceName=BatHome,-1
  11. attrib +s +h "%DstFolder%\desktop.ini"
  12. >%temp%\UnlockReg.txt echo HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\LocalizedResourceName [9]
  13. regini %temp%\UnlockReg.txt
  14. >%temp%\LockReg.txt echo HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\LocalizedResourceName [8]
  15. >>%temp%\LockReg.txt  echo "BatHome,-1" = REG_SZ "|"
  16. regini %temp%\LockReg.txt
  17. attrib +s "%DstFolder%"
复制代码
  1. rem 创建无法直接删除的特殊字符文件夹
  2. @echo off
  3. set "DstFolder=C:\test\batcherB\"
  4. if exist "%DstFolder%\" (
  5.   rem echo y|cacls "\\?\%DstFolder%\nul" /g everyone:f
  6.   rem attrib -r -a -s -h "\\?\%DstFolder%\nul"
  7.   rem del /a /f /q "\\?\%DstFolder%\nul"
  8.   echo 文件夹%DstFolder%已存在
  9.   goto :eof
  10. )
  11. md "%DstFolder%"
  12. >"%DstFolder%\desktop.ini" echo [.ShellClassInfo]
  13. >>"%DstFolder%\desktop.ini" echo LocalizedResourceName=BatHome,-1
  14. attrib +s +h "%DstFolder%\desktop.ini"
  15. >"\\?\%DstFolder%\nul" echo.
  16. attrib +s +h "%DstFolder%\desktop.ini"
  17. >%temp%\UnlockReg.txt echo HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\LocalizedResourceName [9]
  18. regini %temp%\UnlockReg.txt
  19. >%temp%\LockReg.txt echo HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\LocalizedResourceName [8]
  20. >>%temp%\LockReg.txt  echo "BatHome,-1" = REG_SZ "|"
  21. regini %temp%\LockReg.txt
  22. attrib +r +a +s +h "\\?\%DstFolder%\nul"
  23. echo y|cacls "\\?\%DstFolder%\nul" /d everyone>nul
  24. attrib +s +r "%DstFolder%"
复制代码
【方案五】以点结尾的文件
  1. rem 创建以点结尾的文件
  2. md "C:\test"
  3. echo bbs.bathome.net>"\\?\C:\test\batcher."
复制代码
  1. rem 打开以点结尾的文件
  2. notepad "\\?\C:\test\batcher."
复制代码
  1. rem 复制以点结尾的文件
  2. copy "\\?\C:\test\batcher." "\\?\C:\"
复制代码
  1. rem 修改以点结尾的文件的属性为“隐藏”
  2. @echo off
  3. set DstFile=C:\test\batcher.
  4. >"%temp%\FileProperty.vbs" echo Set objFSO = CreateObject("Scripting.FileSystemObject").GetFile("\\?\%DstFile%.\")
  5. >>"%temp%\FileProperty.vbs" echo objFSO.Attributes=objFSO.Attributes+2
  6. cscript /nologo "%temp%\FileProperty.vbs"
复制代码
  1. rem 删除以点结尾的文件
  2. del /a /f /q "\\?\C:\test\batcher."
复制代码
【方案六】系统保留字文件(Con, Prn, Aux, Nul, Lpt1, Com1, Com2)
  1. rem 创建系统保留字文件
  2. md "C:\test\batcher"
  3. echo bbs.bathome.net>"\\?\C:\test\batcher\con"
复制代码
  1. rem 打开系统保留字文件
  2. notepad "\\?\C:\test\batcher\con"
复制代码
  1. rem 复制系统保留字文件
  2. copy "\\?\C:\test\batcher\con" "\\?\C:\test"
复制代码
  1. rem 修改系统保留字文件的属性为“隐藏”
  2. @echo off
  3. set DstFile=C:\test\batcher\con
  4. >"%temp%\FileProperty.vbs" echo Set objFSO = CreateObject("Scripting.FileSystemObject").GetFile("\\?\%DstFile%.\")
  5. >>"%temp%\FileProperty.vbs" echo objFSO.Attributes=objFSO.Attributes+2
  6. cscript /nologo "%temp%\FileProperty.vbs"
复制代码
  1. rem 删除系统保留字文件
  2. del /a /f /q "\\?\C:\test\batcher\con"
复制代码
8

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

回复 1# Batcher
这样为什么获取不到短文件名
  1. @Echo off
  2. md "%Temp%\batcher..\"
  3. dir /x %Temp%\
  4. pause
复制代码

TOP

我要按粘贴版上(或者快捷键提取到路径)的路径打开文件夹如何做到

TOP

这贴子总结的好详细。

TOP

可以在移动硬盘上划出个100g的FAT32,来存小黄片

TOP

学习不少,受益匪浅

TOP

学习,果然高手多

TOP

不错不错不错不错不错

TOP

不错不错不错不错不错

TOP

不错不错不错不错不错

TOP

感谢分享啊。

TOP

又学到不少,谢谢

TOP

一个一个理解,手敲

TOP

巳解决!

2个字母短文件夹名不行,
3个字母以上短文件夹名测试成功。

感谢楼主提供的好方法!

TOP

rem 把以点结尾的文件夹重命名为普通文件夹
rem 短文件名可以使用dir/x命令获得
ren "C:\test\BATCHE~1" "batcher"

以上测试成功,但短文件夹名如何写?

比如 c:\aa.  重命名为  c:\aa

TOP

返回列表