Powershell 使用批处理文件中的变量定义

Powershell 使用批处理文件中的变量定义,powershell,batch-file,cmd,powershell-3.0,powershell-4.0,Powershell,Batch File,Cmd,Powershell 3.0,Powershell 4.0,设置“$today=(Get Date).ToString('MM_dd_yy')” 回声“%today%” 我已经创建了date.bat文件,但它没有打印日期。请帮我解决这个问题。提前谢谢 输出- 可操作的程序或批处理文件 C:\Desktop>echo“$today” “$today” @echo关闭 对于/f“tokens=2-4 delims=/”('date/t')do中的%%a(设置mydate=%%c-%%a-%%b) 对于/f“令牌=1-2 delims=/:”%a in

设置“$today=(Get Date).ToString('MM_dd_yy')” 回声“%today%”

我已经创建了date.bat文件,但它没有打印日期。请帮我解决这个问题。提前谢谢

输出-

可操作的程序或批处理文件

C:\Desktop>echo“$today” “$today”

@echo关闭
对于/f“tokens=2-4 delims=/”('date/t')do中的%%a(设置mydate=%%c-%%a-%%b)
对于/f“令牌=1-2 delims=/:”%a in('time/t')do(设置mytime=%a%%b)

echo%mydate%\uU%mytime%
正如您所发现的,任意混合旧版cmd.exe(批处理)代码和PowerShell将无法工作。特别是在代码中,您使用的是
set
,它在批处理中设置环境变量,而不是PowerShell。此外,由
%
字符包围的环境变量名称在PowerShell中不起作用。您需要决定要使用哪种环境(我建议使用PowerShell)并使用适当的代码。页面顶部有一个非常好的搜索工具,并且已经有大量答案显示了将任何命令的结果输入变量的过程,其中许多人也在检索PowerShell命令的结果
@For/F%%G In(“%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe-NoProfile-NoLogo-Command“Get Date-Format'MM_dd_yy'”)Do@Set“today=%%G”
。嗨@Bill_Stewart,当我运行bat文件时,我需要以管理员身份运行此bat文件以执行我的所有命令。我怎样才能做到呢?获取错误-对路径“C:\Production\u 2021\u 05\u 29\u 06\u 27 AM”的访问被拒绝。它给了我一个额外的空间-“当前日期和时间”:2021\u 05\u 29\u 719@echo off For/f“tokens=2-4 delims=/”%a in('Date/t')do(设置mydate=%C\u%%a%%b)For/f“tokens=1-2 delims=/:”%a in(%Time%)do(设置mytime=%a%%%b)echo“当前日期和时间”:%mydate%\u%mytime%是否确实要将冒号
字符放入文件名中?我不会的。在非Windows系统上不友好。
  + CategoryInfo          : NotSpecified: ('$today' is not...ternal command,:String) [], RemoteException
  + FullyQualifiedErrorId : NativeCommandError