PowerShell 中批处理的等效百分比*是多少

PowerShell 中批处理的等效百分比*是多少

批处理脚本:

@echo off
if not "!!"=="" setlocal enabledelayedexpansion

for /f "tokens=4*" %%a in (
'dir /AD "%USERPROFILE%\" ^| find "DIR" ^| Find /v " ."'
) do if "%%b"=="" (set $dirs=!$dirs!"%%a" ) else (set $dirs=!$dirs!"%%a %%b" )

call :getmaxlen !$dirs!
echo Dirs !$dirs!
echo maklen '%max%'
pause 

:getmaxlen
set var=%*
for %%a in (!var!) do (
    set #L=%%~a
    for /L %%a in (0 1 100) do if not "!#L:~%%a,1!"=="" set len=%%a
    set /a len+=1& set "$Lens=!$Lens!!len! "
)
for %%a in (!$Lens!) do (
    if not defined max Set max=%%a
    if %%a GTR !max! Set max=%%a
)
exit /b

PowerShell 脚本:

function demo {
    $dirs = (gci $Home -Directory -force).Name
    getmaxlen
    "max len $max"
    pause 
}

function getmaxlen {
    $var = $dirs
    #$var =???
    $Script:max  = ($var | Measure -Maximum -Property Length).Maximum
}

demo

set var=%*从上面的批处理脚本中, PowerShell 调用函数中相当于什么?

我指的是%*PowerShell 中的等效项。$var =???

function getmaxlen所以。我可以在任何时候使用 Powershell 。

答案1

批处理和 PowerShell 传递参数的机制没有可比性。

基本上,PowerShell 使用两个内置变量:

一些可以帮助您入门的参考资料:

答案2

根据帖子中的回答:Powershell 中与 bash $* 等效的是什么?

function demo {
    $dirs = (gci $Home -Directory -force).Name
    getmaxlen $dirs
    $max; pause; CLS 
    $dirs = (gci / -Directory -force).Name
    getmaxlen $dirs
    $max; pause; CLS 
    $dirs = (gci $env:Windir -Directory -force).Name
    getmaxlen $dirs
    $max; pause; exit 0
}

function getmaxlen {
    param ()
    $var = $args | foreach {$_}
    $Script:max  = ($var | Measure -Maximum -Property Length).Maximum
}

demo

在 PowerShell 中可以使用:

param()
$var = $args | foreach {$_}

因此function getmaxlen可以重复调用

相关内容