无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 681|回复: 14
打印 上一主题 下一主题

[已解决] 【已解决】这个bat的显示,可以弄到中间吗?谢谢

[复制链接]
跳转到指定楼层
1#
发表于 2025-3-15 11:38:09 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyz2191958 于 2025-3-16 07:43 编辑

完美解决了:
@set @x=1 /* &@echo off &::【代码(最前)和(最后)好像不能有字符。(z.toFixed(3)————3位小数)】
::==============================================================================================
if "%~1"=="" goto :Q
::【双击,输入数字————计算】【拖到图标:复制 ————文件(夹)的路径】
::==============================================================================================
echo.%~1|clip.exe
:Q
set/p "路径(数字)=文件(夹)路径 或 数字:"
::==============================================================================================
set "v=" &set "v=%路径(数字)%"
set "q=0"
dir /ad "%路径(数字)%" >nul 2>&1
if %errorlevel% equ 0 (set "q=1") else if exist "%v%" (for %%v in ("%v%") do set "v=%%~zv") else set "v=%v:,=%"
cscript /nologo /e:jscript "%~f0" "%v%" %q%
pause>nul 2>nul&exit/b */
n=0, v=WSH.arguments, q=v(1);
if (q==1) { z=WSH.createObject('scripting.fileSystemObject').getFolder(v(0)).size }
else z=+v(0);
while (z/1024>=1) {z/=1024; n++; if (n==6) break;}
z=z.toFixed(3)+[' 字节',' KB',' MB',' GB',' TB',' PB',' EB'][n];
//WSH.echo(z), WSH.quit();  // 如果不需要居中,则删行首的 “//” 及下一行以后的全部


// 计算屏幕中间位置
var screenHeight = 25; // 假设屏幕高度为25行
var screenWidth = 80;  // 假设屏幕宽度为80列
var output = z;
var outputLength = output.length;
var spaces = Math.floor((screenWidth - outputLength) / 2);
var emptyLines = Math.floor((screenHeight - 1) / 2);


// 输出空行
for (var i = 0; i < emptyLines; i++) {
    WSH.echo("");
}


// 输出空格(使用循环代替 repeat)
var spaceString = "";
for (var i = 0; i < spaces; i++) {
    spaceString += " ";
}


// 输出结果
WSH.echo(spaceString + output);
WSH.quit();
========================
原来的问题:
这个bat的显示,可以弄到中间吗?谢谢




@set @x=1 /* &@echo off &::【代码(最前)和(最后)好像不能有字符。(z.toFixed(3)————3位小数)】
::==============================================================================================
if "%~1"=="" goto :Q
::【双击,输入数字————计算】【拖到图标:复制 ————文件(夹)的路径】
::==============================================================================================
echo.%~1|clip.exe
:Q
set/p "路径(数字)=文件(夹)路径 或 数字:"
cls
::==============================================================================================
set "v=" &set "v=%路径(数字)%"
set "q=0"
dir /ad "%路径(数字)%" >nul 2>&1
if %errorlevel% equ 0 (set "q=1") else if exist "%v%" (for %%v in ("%v%") do set "v=%%~zv") else set "v=%v:,=%"
cscript /nologo /e:jscript "%~f0" "%v%" %q%
pause>nul 2>nul&exit/b */
n=0, v=WSH.arguments, q=v(1);
if (q==1) { z=WSH.createObject('scripting.fileSystemObject').getFolder(v(0)).size }
else z=+v(0);
while (z/1024>=1) {z/=1024; n++; if (n==6) break;}
z=z.toFixed(3)+[' 字节',' KB',' MB',' GB',' TB',' PB',' EB'][n];
WSH.echo(z), WSH.quit();




2#
发表于 2025-3-15 11:41:42 | 只看该作者
完全可以

echo.    加上需要显示的内容

点评

麻烦你看下代码,里面好像不全是BAT代码  详情 回复 发表于 2025-3-15 11:43
回复

使用道具 举报

3#
 楼主| 发表于 2025-3-15 11:43:56 | 只看该作者
martin313 发表于 2025-3-15 11:41
完全可以

echo.    加上需要显示的内容

麻烦你看下代码,里面好像不全是BAT代码

点评

@set @x=1 /* &@echo off echo. set "v=%~1" if not defined v exit /b set "q=0" if exist "%v%\" ( set "q=1" ) else if exist "%v%" ( for %%v in ("%v%") do set "v=%%~zv" ) else ( set  详情 回复 发表于 2025-3-15 12:04
回复

使用道具 举报

4#
发表于 2025-3-15 11:58:38 | 只看该作者
yyz2191958 发表于 2025-3-15 11:43
麻烦你看下代码,里面好像不全是BAT代码

图片20250315115806.png (65.08 KB, 下载次数: 1)

图片20250315115806.png

点评

在哪里修改?这样修改?谢谢  详情 回复 发表于 2025-3-15 12:03

评分

参与人数 1无忧币 +5 收起 理由
yyz2191958 + 5

查看全部评分

回复

使用道具 举报

5#
 楼主| 发表于 2025-3-15 12:03:54 | 只看该作者

在哪里修改?这样修改?谢谢
回复

使用道具 举报

6#
发表于 2025-3-15 12:04:10 | 只看该作者
yyz2191958 发表于 2025-3-15 11:43
麻烦你看下代码,里面好像不全是BAT代码

@set @x=1 /* &@echo off
echo.
set "v=%~1"
if not defined v exit /b
set "q=0"
if exist "%v%\" (
    set "q=1"
) else if exist "%v%" (
    for %%v in ("%v%") do set "v=%%~zv"
) else (
    set "v=%v:,=%"
)
cscript /nologo /e:jscript "%~f0" "%v%" %q%
pause>nul 2>nul&exit /b */
n=0, v=WSH.arguments, q=v(1);
if (q==1) { z=WSH.createObject('scripting.fileSystemObject').getFolder(v(0)).size }
else z=+v(0);
while (z/1024>=1) {z/=1024; n++; if (n==6) break;}
z=z.toFixed(2)+[' 字节',' KB',' MB',' GB',' TB',' PB',' EB'][n];

// 计算屏幕中间位置
var screenHeight = 25; // 假设屏幕高度为25行
var screenWidth = 80;  // 假设屏幕宽度为80列
var output = z;
var outputLength = output.length;
var spaces = Math.floor((screenWidth - outputLength) / 2);
var emptyLines = Math.floor((screenHeight - 1) / 2);

// 输出空行
for (var i = 0; i < emptyLines; i++) {
    WSH.echo("");
}

// 输出空格(使用循环代替 repeat)
var spaceString = "";
for (var i = 0; i < spaces; i++) {
    spaceString += " ";
}

// 输出结果
WSH.echo(spaceString + output);
WSH.quit();


注意事项:
如果屏幕的实际高度和宽度与代码中假设的 screenHeight 和 screenWidth 不一致,可以动态获取屏幕大小(例如通过 PowerShell 或其他方法),然后传递给 JScript。

如果需要更精确的居中效果,可以考虑使用 PowerShell 或第三方工具来实现更复杂的控制。

点评

谢谢,我慢慢琢磨  详情 回复 发表于 2025-3-15 12:05

评分

参与人数 1无忧币 +5 收起 理由
yyz2191958 + 5

查看全部评分

回复

使用道具 举报

7#
 楼主| 发表于 2025-3-15 12:05:48 | 只看该作者
martin313 发表于 2025-3-15 12:04
@set @x=1 /* &@echo off
echo.
set "v=%~1"

谢谢,我慢慢琢磨
回复

使用道具 举报

8#
发表于 2025-3-15 12:06:17 | 只看该作者
请自行调整

var screenHeight = 25; // 假设屏幕高度为25行
var screenWidth = 80;  // 假设屏幕宽度为80列

达到你想要的显示效果

点评

成功了 再次感谢  详情 回复 发表于 2025-3-15 12:14

评分

参与人数 1无忧币 +5 收起 理由
yyz2191958 + 5

查看全部评分

回复

使用道具 举报

9#
 楼主| 发表于 2025-3-15 12:14:10 | 只看该作者
martin313 发表于 2025-3-15 12:06
请自行调整

var screenHeight = 25; // 假设屏幕高度为25行

成功了  再次感谢
回复

使用道具 举报

10#
发表于 2025-3-15 13:06:39 | 只看该作者
这个代码有意思呀
回复

使用道具 举报

11#
发表于 2025-3-15 14:41:01 | 只看该作者
感谢分享
回复

使用道具 举报

12#
发表于 2025-3-15 14:58:40 | 只看该作者
谢谢各位。
回复

使用道具 举报

13#
发表于 2025-3-15 15:17:42 | 只看该作者
你好,正确的批处理可以完整贴出不。并且做好分界线说明,谢谢。
回复

使用道具 举报

14#
发表于 2025-3-15 15:35:40 | 只看该作者
为什么要放中间?有什么必须的原因?
回复

使用道具 举报

15#
发表于 2025-3-15 16:09:41 | 只看该作者
谢谢大牛的分享!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-4-2 04:04

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表