如何删除一个无限长路径的文件夹(别说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个选项 打开、在新窗口中打开、包含到库中、发送到 甚至连属性都没了 右键打开无反应 在新窗口中打开也无反应 其他两个相信也没什么用
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.exe
在set 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:\tools 或 C:\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+的主要内容,如果未能解决你的问题,请参考以下文章