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

批处理脚本中%~s1与%~fs1的区别及演示方法

批处理中%s1与%fs1的区别及演示

1. 二者的核心区别

  • %~s1:仅对输入参数做短路径转换,会保留原参数的路径类型(相对路径/绝对路径)。如果原参数是相对路径,转换后依然是相对的短路径;如果是绝对路径,结果就是绝对短路径。
  • %~fs1:先将输入参数解析为绝对路径,再转换为短路径格式。无论原参数是相对还是绝对路径,最终输出的都是绝对短路径。

你之前的测试用了绝对路径作为参数,所以两者输出一致,看不出差异。

2. 演示区别的批处理脚本

可以通过传递相对路径参数来直观展示差异,示例脚本如下:

@echo off
:: 先切换到目标目录的上级目录
cd /d "D:\ThisIsBatchDirectoryWithLongPath"

:: 用相对路径调用方法
call :Method "UsersBatchSubdirectory"

exit /b

:Method
echo 原参数:%~1
echo %%~s1 输出:%~s1
echo %%~fs1 输出:%~fs1

exit /b

输出结果示例

原参数:UsersBatchSubdirectory
%~s1 输出:USERSB~1
%~fs1 输出:D:\THISIS~1\USERSB~1

这里能明显看到:%s1输出的是相对短路径,而%fs1输出的是完整的绝对短路径。

你也可以用更复杂的相对路径(比如..\SomeOtherLongDir)测试,结果同样会体现出两者的差异:%s1保留相对结构的短路径,%fs1则输出对应的绝对短路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 07:24:54