如何删除一个无限长路径的文件夹(别说robocopy、金山粉碎机啥的 用过无效)解决追加100+

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何删除一个无限长路径的文件夹(别说robocopy、金山粉碎机啥的 用过无效)解决追加100+相关的知识,希望对你有一定的参考价值。

DEL /F /A /Q \\?\%1
RD /S /Q \\?\%1
也无效 也别说什么格式化 太累了 就是看它碍眼。。
具体情况是 删除 源文件名长度大于文件系统支持的长度。请尝试将其移动到具有较短路径名称的位置,或者在至此那个此操作前尝试将其重命名为较短的名称。 冰刃好像不支持win7 我的是 win 7 x86 旗舰版的系统 用rd删除显示 不是空目录 进入到最里面的目录删除时显示 D:\1\D__MUS~1\D__MUS~1\D__MUS~1\D__MUS~1\D__MUS~1\D__MUS~1\D__MUS~1\D__MUS~1\D__MUS~1\D__MUS~1\D__MUS~1\D__MUS~1\D__MUS~1\D__MUS~1\D__MUS~1\D__MUS~1\D__MUS~1\D__MUS~1\D__MUS~1\D__MUS~1\D__MUS~1\D__MUS~1\D__MUS~1\D__MUS~1\D__MUS~1\D__MUS~1\D__Music_韩国歌曲精选_ 系统找不到指定的路径 D:\1\D__Music_韩国歌曲精选_ 就是这个目录 右键文件夹 1 显示里面有15个目录 也就是说 里面有15个 D__Music_韩国歌曲精选_ 文件夹 进入到15个后 却显示有6个文件夹 又进入6个文件夹后 显示有2 个文件夹 又进入2个文件夹后 显示有1个文件夹 又进入1个文件夹后 显示有0个文件夹 但是进去后还是有文件夹 右键最后这个目录 有4个选项 打开、在新窗口中打开、包含到库中、发送到 甚至连属性都没了 右键打开无反应 在新窗口中打开也无反应 其他两个相信也没什么用

你运行CMD,再用 rd 命令删除试试~例如我有个文件夹在C盘 就打
rd c:\文件夹名\ 就可以了~
如果有效请采纳~谢谢
参考技术A 尊敬的用户您好:
建议您重启一下您的电脑按f8进入安全模式
删除文件的安装目录
祝您生活愉快!
参考技术B 是删除的时候弹出什么错误还是其他的,你说清楚点啊

如何从批处理脚本中的文件路径中删除最后一个“\”

【中文标题】如何从批处理脚本中的文件路径中删除最后一个“\\”【英文标题】:How can I delete last "\" from file's path in batch script如何从批处理脚本中的文件路径中删除最后一个“\” 【发布时间】:2021-09-08 14:49:37 【问题描述】:

我正在尝试这个,它会在我复制文件路径(Shift+右键单击>复制为路径)并将其放入批处理文件后计算文件的行,但是....我该如何解决? %path% 中的最后一个 \ 导致问题。

@echo off
Setlocal EnableDelayedExpansion
set /p ifilename=Enter file name:
for %%f in (%ifilename%) do (
set paath=%%~df%%~pf
set ifilename=%%~nf%%~xf
)
echo %paath%
echo %ifilename%

for /f "usebackq" %%a in (`dir /b /s %1 "%paath%"`)  do (
  for /f "usebackq" %%b in (`type %ifilename% ^| find "" /v /c`) do (
set lines= %%b
)
)
echo %lines%
pause

【问题讨论】:

真正的问题是set path=%%~df%%~pf,它重新定义了预定义的环境变量PATH,这是一个非常重要预定义的Windows Environment Variables,如我在@ 的回答中详细描述的那样987654322@ 确保永远不要在命令提示符窗口set 中运行时无意中重新定义其中一个预定义的 Windows 环境变量输出。 命令DIR绝对没有问题递归列出指定目录中的所有目录和文件,该目录的路径以反斜杠结尾。但是cmd.exeset path=%%~df%%~pf 之后搜索名称为find 的文件时不再找到%SystemRoot%\System32\find.exe。我建议将此行更改为set "FilePath=%%~dpf"。请打开command prompt,运行for/?,并从第一页顶部到最后一页底部仔细完整地阅读输出帮助。对 dir /?set /? 执行相同操作。 我会更具体,第一个我是新手,第二个是,如果我输入 C:\tools\xe.txt 这个,%%~dpf 将是C:\tools** 所以如果我把它放在 *path 位置,它会说错误。但是,如果我将 C:\tools 放在路径中它可以工作,所以我需要的是,如何删除最后一个“\”形式,无论路径是什么,制作这个 C:\tools*进入 *C:\toolsC:\tools\New folder\New folder* 进入 **C:\tools\New folder\New folder删除反斜杠 从不覆盖系统变量PATH!改用另一个名字!修饰符 ~p 总是返回带有尾随 \ 的路径,但这通常不会造成伤害;如果在特定情况下确实如此,只需附加一个.,因为\abc\. 相当于\abc... 关于如何使用批处理文件的描述对我来说很清楚,但没有关于批处理文件应该做什么的描述。这对于批处理文件编码专家来说通常是没有问题的,但是您的批处理文件有很多错误,至少对我来说不清楚批处理文件应该做什么。 dir /b /s %1 "%path%" 的目标是什么? %1 引用了传递给批处理文件的第一个参数。没有任何关于使用参数调用批处理文件的文章。 【参考方案1】:

>> %path% 中的最后一个 \ 导致问题 这个很容易解决,代码是:

set TempDir=C:\0TEMP
@echo off
md %TempDir%
cd /d  %TempDir%

::------

@echo off
@echo on
Setlocal EnableDelayedExpansion

::set /p ifilename=Enter file name:
SET DUMMYexe=%TempDir%\DUMMY.exe
IF EXIST "%DUMMYexe%" goto ll123
ECHO ---------writing
pause
(
  ECHO pause1
  ECHO pause2
  ECHO pause3
) > %DUMMYexe%
:ll123
SET ifilename=%DUMMYexe%

for %%f in (%ifilename%) do (
set fpath=%%~df%%~pf
set ifilename=%%~nf%%~xf
)
echo %fpath%
echo %ifilename%

SET v=asdf1234
SET vv=\%v%
SET vvv=%fpath%%vv%

CALL SET v=%%vvv:\%vv%=%%
echo 111---%v%

pause
set fpath=%v%


for /f "usebackq" %%a in (`dir /b /s %1 "%fpath%"`)  do (
  for /f "usebackq" %%b in (`type %ifilename% ^| find "" /v /c`) do (
set lines= %%b
)
)
echo %lines%
echo on
pause
goto

当然,如果我使用 var 'path',我的 win10 会报告: 'find' 不是内部或外部命令、可运行程序或批处理文件。

顺便说一句,也许你会对下面的代码感兴趣:


SETLOCAL ENABLEDELAYEDEXPANSION
SET count=1
FOR /F "tokens=* USEBACKQ" %%F IN (`dir `) DO (
  SET var!count!=%%F
  SET /a count=!count!+1
)
ECHO -------------- %count%
ECHO
ECHO %var1%
ECHO %var2%
ECHO %var3%
ENDLOCAL
pause

我在复制后测试的:How to set commands output as a variable in a batch file

关于“Setlocal EnableDelayedExpansion”的非常有用的信息可以在以下位置找到:How do SETLOCAL and ENABLEDELAYEDEXPANSION work?

【讨论】:

以上是关于如何删除一个无限长路径的文件夹(别说robocopy、金山粉碎机啥的 用过无效)解决追加100+的主要内容,如果未能解决你的问题,请参考以下文章

windows路径太长无法删除

Windows中删除路径太长目录及文件

windows路径太长无法删除

无法删除长路径的文件(夹)

删除无限循环文件夹

如何删除路径带~的文件