脚本新手。 我有一个非常基本的脚本,可以在ISE中正常运行,但是当我在文件中运行该脚本时却无法运行。 脚本:
#
# WPM Convert to Ascii.ps1
# Process to remove accented characters from a text file as they cause issues when importing to U4BW via GL07
# SP Jan 2019
#
# Parameters
#
$usefile =$dir+"\"+'SPTEMP.txt'
$outfile =$dir+"\"+'SPOUT.txt'
#
# Convert characters
#
Get-Content $usefile -replace 'a', 'A' |Set-Content $outfile
仅将一个文件中的字符转换为另一个文件。 从U4BW(Agresso)命令调用的是:-
powershell.exe -ExecutionPolicy Unrestricted -File "c:\scripts\WPM Convert to Ascii.ps1" -infile "[File name]" -dir "[Directory]"
我已经调试了所有发送的参数(infile和dir),它们很好。尝试事先关闭文件(输出文件)。
我知道这可能是一个基本问题,但我看不到。 任何帮助表示感谢! 史蒂夫
答案 0 :(得分:1)
您需要对脚本进行以下更改。
在脚本顶部进行声明,以便实际上在脚本中可以识别出调用中的-dir
参数:
param($dir)
此外,您的replace命令看起来错误,-Replace
不是Get-Content
的有效参数。你可能是这个意思吗?
(Get-Content $usefile) -replace 'a', 'A' | Set-Content $outfile
最终脚本(其他一些小的改进):
# WPM Convert to Ascii.ps1
# Process to remove accented characters from a text file as they cause issues when importing to U4BW via GL07
# SP Jan 2019
# Passed parameters
param (
# The base directory path
$dir
)
# Derived parameters
$usefile = Join-Path $dir "SPTEMP.txt"
$outfile = Join-Path $dir "SPOUT.txt"
# Replace characters
(Get-Content $usefile) -replace 'a', 'A' | Set-Content $outfile
然后这样称呼它:
powershell.exe -ExecutionPolicy Unrestricted -File "c:\scripts\WPM Convert to Ascii.ps1" -dir "[Directory]"
答案 1 :(得分:0)
我同意上面所说的,“替换”不是获取内容的参数。
# WPM Convert to Ascii.ps1
# Process to remove accented characters from a text file as they cause issues when importing to U4BW via GL07
# SP Jan 2019
#
Param
(
[Parameter(Mandatory=$true)]
[string]$usefile,
[Parameter(Mandatory=$true)]
[string]$outfile,
[Parameter(Mandatory=$false)]
$dir = $(Get-Location)
)
#
# Convert characters
#
(Get-Content $usefile) -replace 'a', 'A' |Set-Content $dir/$outfile