You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

批处理文件中如何仅获取文件夹名称而非完整目录?

问题

我有一个用于7zip压缩文件的批处理文件,当电脑内存不足或因其他原因失败时,它会自动降低压缩设置。我将文件夹拖拽到该批处理文件上,它会在待压缩文件夹的根目录生成压缩包。

示例:待压缩文件夹路径为Z:\Test\Example Folder。
使用以下代码时:

for %%x in (%*) do (
Rem //  Use Current Argument To set File, Folder, and Archive Paths
    Set filePath="%%~x"
    Set directoryFiles="%%~x\*"
    Set archivePath="%%~x.7z"
)

生成的7zip文件位于待压缩文件夹的根目录,即Z:\Test\Example Folder.7z。

若使用以下代码:

for %%x in (%*) do (
Rem //  Use Current Argument To set File, Folder, and Archive Paths
    Set filePath="%%~x"
    Set directoryFiles="%%~x\*"
    Set archivePath="C:\Users\Dr4gon\Downloads\Compressed\NEW.7z"
)

生成的7zip文件为C:\Users\Dr4gon\Downloads\Compressed\NEW.7z。

我尝试修改为C:\Users\Dr4gon\Downloads\Compressed\%%~x.7z但失败了,推测是因为%%~x代表的是完整路径Z:\Test\Example Folder而非仅文件夹名称Example Folder。

请问需要使用什么代码才能让7zip文件保存为C:\Users\Dr4gon\Downloads\Compressed\Example Folder.7z?

做出此修改的主要原因是,有时我需要压缩网络上的文件夹,同时写入网络驱动器速度过慢且有时会失败。我希望能设置一个默认目录,提升跨驱动器使用7zip压缩的速度。

解决方案

在批处理中,使用%%~nx可以获取拖拽文件夹的纯名称(不含完整路径),替换原来的%%~x即可实现需求。修改后的代码如下:

for %%x in (%*) do (
Rem //  Use Current Argument To set File, Folder, and Archive Paths
    Set filePath="%%~x"
    Set directoryFiles="%%~x\*"
    Set archivePath="C:\Users\Dr4gon\Downloads\Compressed\%%~nx.7z"
)

参数说明

  • %%~x:代表完整的文件夹路径(如Z:\Test\Example Folder)
  • %%~nx:仅提取路径中的文件夹名称(如Example Folder)

这样修改后,压缩包会自动以原文件夹名称命名,并保存到指定的本地目录下,避免写入网络驱动器的速度问题。

内容的提问来源于stack exchange,提问作者DR4GON

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 19:17:28