标题: [问题求助] a.bat 调用 a.ps1 ,传递 %* 会丢失第一个参数 [打印本页]
作者: newswan 时间: 2024-5-18 00:33 标题: a.bat 调用 a.ps1 ,传递 %* 会丢失第一个参数
a.bat- @echo off
- setlocal EnableDelayedExpansion
-
- :Loop
- echo %1
- shift /1
- if not "%1" == "" goto :Loop
-
- powershell.exe -ExecutionPolicy Bypass -File "%~n0.ps1" %*
-
- pause
- exit/b
复制代码
a.ps1- param(
- [string[]]$args
- )
-
- $args.gettype()
- $args.length
-
- foreach ( $a in $args ) {
- Write-Host "Received arguments: $a"
- }
复制代码
把几个文件拖到bat上,第一个文件传递不到 ps
why?
作者: pd1 时间: 2024-5-18 10:21
回复 1# newswan
和a.bat没关系, 直接运行a.ps1 1 2 3 也是缺一个
我把下面的删除了就不缺了,新手不是很懂param
param(
[string[]]$args
)
作者: newswan 时间: 2024-5-18 10:59
回复 2# pd1
对,以前没加,这是ai给的,才发现有这问题。原理是啥?
作者: buyiyang 时间: 2024-5-18 11:34
和自动变量$args冲突了吧
作者: newswan 时间: 2024-5-18 21:29
- param(
- [string[]]$Para
- )
-
- $Para.gettype()
- $Para.length
-
- foreach ( $a in $Para ) {
- Write-Host "Received arguments Para: $a"
- }
- foreach ( $a in $args ) {
- Write-Host "Received arguments args: $a"
- }
复制代码
- param(
- [string[]]$Para ,
- [string[]]$args
- )
-
- $Para.gettype()
- $Para.length
-
- foreach ( $a in $Para ) {
- Write-Host "Received arguments Para: $a"
- }
- foreach ( $a in $args ) {
- Write-Host "Received arguments args: $a"
- }
复制代码
作者: newswan 时间: 2024-5-18 21:31
$args 没有声明,包含未被声明的参数
$args 声明,丢失一个参数,包含剩余未被声明的参数
作者: newswan 时间: 2024-5-18 21:45
回复 4# buyiyang
对
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |