Loops I';我正在尝试创建一个寻呼系统。这不是完整的代码。获得;路径不';“不存在”;运行代码时
我是powershell的新手,知道我为什么会出错吗 昨天\日期=(获取日期).AddDays(-1).ToString(“yyyMMdd”) 开始作业$jsb-名称DumLoops I';我正在尝试创建一个寻呼系统。这不是完整的代码。获得;路径不';“不存在”;运行代码时,loops,powershell,path,Loops,Powershell,Path,我是powershell的新手,知道我为什么会出错吗 昨天\日期=(获取日期).AddDays(-1).ToString(“yyyMMdd”) 开始作业$jsb-名称Dum do{ Receive-Job -Name Dum | out-file C:\Users\path\pager.txt -append }while(1) 一些语法错误 第一:变量日期中缺少$。此外,您稍后将引用变量$dayed\u Date1,而不是$dayed\u Date。始终使用Set PSDebug-Stric
do{
Receive-Job -Name Dum | out-file C:\Users\path\pager.txt -append
}while(1)
一些语法错误
第一:变量日期中缺少$
。此外,您稍后将引用变量$dayed\u Date1
,而不是$dayed\u Date
。始终使用Set PSDebug-Strict
捕捉此类错误。正确的形式是
$Yesterday_Date = (get-date).AddDays(-1).ToString("yyyMMdd")
第二:单引号不计算字符串中的变量。双引号可以。考虑:
$file = 'C:\Users\d1\Documents\Batch\path\$Yesterday_Date\page.log'
$file
# Output
C:\Users\d1\Documents\Batch\path\$Yesterday_Date1page.log
$file2 = "C:\Users\d1\Documents\Batch\path\$Yesterday_Date1\page.log"
$file2
# Output
C:\Users\d1\Documents\Batch\path\20130520\page.log
编辑:
为了解决评论中的问题,问题在于作业需要特殊的参数处理。使用-Arg
将日期变量作为参数传递。这样,
$Yesterday_Date = (get-date).AddDays(-1).ToString("yyyMMdd")
$jsb={
param($date)
$file = "C:\Users\d1\Documents\Batch\path\$date\page.log"
write-host $file
}
Start-Job $jsb -name Dummy -arg $Yesterday_Date
Wait-Job -name Dummy
Receive-Job -Name Dummy
# Output
C:\Users\d1\Documents\Batch\path\20130521\page.log
修改后的代码:$dayed\u Date=(get Date).AddDays(-1).ToString(“yyyymmd”)$jsb={$file=“C:\Users\d1\Documents\Batch\path\$dayed\u Date1\page.log“get Content$file-Wait | ForEach Object-Begin{$counter=1$lines=@(get Content$file).Count}-Process{if($counter++-gt$lines){write host$\u}}}Start Job$jsb-name Dummy Receive Job-name Dummy | out file C:\Users\path\pager.txt-append但是,上面的代码引发了错误。错误:找不到路径“C:\Users\d1\Documents\Batch\path\$Date1\page.log”,因为它不存在。注意:Test path$file True在$jsb的脚本代码中无法识别变量$dayed\u Date。该路径是正确的,因为我尝试了Test path,它给出了True。现在怎么了???
$Yesterday_Date = (get-date).AddDays(-1).ToString("yyyMMdd")
$jsb={
param($date)
$file = "C:\Users\d1\Documents\Batch\path\$date\page.log"
write-host $file
}
Start-Job $jsb -name Dummy -arg $Yesterday_Date
Wait-Job -name Dummy
Receive-Job -Name Dummy
# Output
C:\Users\d1\Documents\Batch\path\20130521\page.log