我想在 cmd.exe 中有一个包含星期几的环境变量。
当我运行这个命令时,我得到了我想要的结果。
C:\Users\tisc> powershell (get-date).dayofweek
Friday
Run Code Online (Sandbox Code Playgroud)
在这里,我试图将结果存储在环境变量中。
C:\Users\tisc> set dow = powershell (get-date).dayofweek
Run Code Online (Sandbox Code Playgroud)
但是当我试图得到它时,我没有得到我想要的字符串。
C:\Users\tisc> set dow
DoW=0
dow = powershell (get-date).dayofweek
Run Code Online (Sandbox Code Playgroud)
我的目标是将批处理文件中的变量用于某些备份脚本。
我%0在批处理文件中使用以获取批处理文件的包含目录,但结果是:-
c:\folder1\folder2\batch.bat
我只想要目录,没有批处理文件名,就像这样:-
c:\folder1\folder2\
我该怎么做?也许我应该过滤路径。如果是,我该怎么做?
windows command-line-interface batch windows-command-prompt path
我需要在 bat 脚本文件中运行 Windows 命令 n 次。我知道如何使用各种编程语言执行此操作,但无法在 Windows 命令行上正确执行:-(
我希望有类似的东西
for(int i = 0; i < 100; i++) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
甚至这个(虽然不完全是认真的)
1.upto(100, {
// do something
})
Run Code Online (Sandbox Code Playgroud)
谢谢!
编辑
我可以用 java、perl、c 或任何会生成 bat 脚本的程序编写如下所示
for %%N in (1 2 3 4 5 6 7 8 9 10 11 12) do echo %%N
Run Code Online (Sandbox Code Playgroud)
等等。甚至“更好”:
echo 1
echo 2
echo 3
echo 4
echo 5
echo 6
echo 7
echo 8
echo 9
echo 10
echo 11
echo 12 …Run Code Online (Sandbox Code Playgroud) 我在 DOS 脚本中遇到了一个错误,该错误使用日期和时间数据进行文件命名。问题是我最终出现了一个差距,因为时间变量没有自动提供小时 < 10 的前导零。所以运行> echo %time% 返回:'9:29:17.88'。
有没有人知道有条件地填充前导零来解决这个问题的方法?
更多信息:我的文件名设置命令是:
set logfile=C:\Temp\robolog_%date:~-4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.log
Run Code Online (Sandbox Code Playgroud)
最终是:C:\Temp\robolog_20100602_93208.log(早上 9:23)。
这个问题和这个有关。
谢谢
我正在使用 a.bat file在 Windows 操作系统级别创建用户和密码。
我面临的问题是,当我EXPIRES:NEVER输入密码时,创建用户时,它没有"Password never expires"选中复选框(意味着为该创建的用户选择了密码永不过期),并且该用户会在 90 天后自动过期。
Net User %1 %2 /COMMENT:"%3" /EXPIRES:NEVER /PASSWORDCHG:NO /ADD
Run Code Online (Sandbox Code Playgroud)
以上是主要代码行,我从文本文件中传递用户名和密码并运行 .bat 文件。
该%DATE%和%TIME%环境变量提供命令行和批处理文件内的当前日期和时间在Windows机器上。
可悲的是,这些值是本地化的!这意味着,比如说,在德国机器上,你会得到
26.1.2011
Run Code Online (Sandbox Code Playgroud)
代替
2011-26-01
Run Code Online (Sandbox Code Playgroud)
如果你想在文件名中使用这个变量,这会搞砸排序。
有没有什么简单的方法可以YYYY-MM-DD在 Windows 批处理文件中获取语言环境未知的日期字符串?
目前,我正在使用这种相当笨拙的解决方法:
for /f "tokens=1,2,3,4 delims=. " %%i in ('date /t') do set date=%%k-%%j-%%i
echo %date%
Run Code Online (Sandbox Code Playgroud)
但现在这是德语语言环境中具体-显然,一个完全独立的解决办法是多漂亮。
有问题的操作系统是 Server 2008。如果可能的话,我宁愿不使用第三方工具。
我有一个批处理文件,可以像这样调用其他批处理文件:
e:\foo\master.bat 有内容:
call e:\bar\run1.bat
Run Code Online (Sandbox Code Playgroud)
并e:\bar\run1.bat有内容
app1.exe
Run Code Online (Sandbox Code Playgroud)
问题是当我运行master.bat app1.exe时不会被执行,因为它会期望它在e:\foo目录中而不是在e:\bar目录中
我有一个批处理脚本,它准备一些文件,执行一个程序 ( .exe),然后删除所述文件。
此任务应每小时运行一次,因此我尝试使用计划任务进行配置。问题是前面提到的程序在从任务中调用时无法正常运行(无论是通过.bat脚本还是.exe直接调用),但我在日志中没有收到任何警告或错误消息。
该任务被配置为作为具有正确设置的所有权限的 Windows 服务帐户运行。使用此帐户通过 RDP 登录时,我可以直接执行.bat和.exe没有问题,但该任务似乎仍然没有执行任何操作。这很容易观察到,因为程序总是修改文件,并且修改的时间戳不会通过任务改变。
在计划任务日志中,我得到了任务启动进程、退出等的信息消息。然而,“结果代码”是111(尝试谷歌这个没有运气,我得到的唯一关联是“文件名太长",这与 AFAIK 完全无关)。在应用程序日志中,我一无所获。
该程序是一个古老的怪物,它产生某种启动画面(它实际上是一个普通窗口),即使不需要 GUI,因为它不需要交互并在操作后自行关闭。窗口出现约 2 秒钟。
我怀疑 GUI 的这一要求与任务失败有关,但我不确定。当我使用运行任务的用户(通过 RDP)登录时,启动计划任务时没有窗口出现。
我构建了一个非常小的 C# 可执行文件,它在没有主窗口的情况下启动程序(使用ProcessStartInfo.WindowStyle = ProcessWindowStyle.Hidden)。即使这样,计划任务仍然没有成功正确启动程序,但返回码现在是0。
当我将任务配置为“无论用户是否登录都运行”并且未选中该run with highest privileges选项时,错误值为.2147943859
我能做些什么来排除故障?
操作系统 = Windows Server 2008 R2 SP1
如果需要更多信息,请在评论中告诉我。