标签: batch

如何在批处理文件中睡觉?

如何在命令和下一个命令之间的 Windows 批处理文件中暂停执行一段时间?

windows batch-file batch

167
推荐指数
4
解决办法
46万
查看次数

Windows 命令提示符:如何将命令的输出放入环境变量中?

我想在 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)

我的目标是将批处理文件中的变量用于某些备份脚本。

powershell batch windows-command-prompt

62
推荐指数
3
解决办法
16万
查看次数

获取包含当前执行的批处理脚本的目录

%0在批处理文件中使用以获取批处理文件的包含目录,但结果是:-

c:\folder1\folder2\batch.bat

我只想要目录,没有批处理文件名,就像这样:-

c:\folder1\folder2\

我该怎么做?也许我应该过滤路径。如果是,我该怎么做?

windows command-line-interface batch windows-command-prompt path

35
推荐指数
2
解决办法
13万
查看次数

在 Windows bat 脚本中,For 循环从 1 到 n 计数

我需要在 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)

scripting windows batch

29
推荐指数
3
解决办法
29万
查看次数

使用 %time% 变量的批处理脚本需要前导零

我在 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)。

这个问题和这个有关。

谢谢

scripting windows time batch

26
推荐指数
3
解决办法
9万
查看次数

如何通过 .bat 文件通过网络用户创建永不过期的密码和用户

我正在使用 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 文件。

windows batch

25
推荐指数
1
解决办法
10万
查看次数

批处理文件中不知道语言环境的 %DATE% 和 %TIME%?

%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。如果可能的话,我宁愿不使用第三方工具。

windows windows-server-2008 localization batch

23
推荐指数
2
解决办法
4万
查看次数

如何提取此文件夹子目录中的所有档案?

如何提取文件夹中子目录中包含的多个档案,将结果输出回档案所在的文件夹。

windows batch

18
推荐指数
1
解决办法
5万
查看次数

调用批处理文件并使用其自己的路径/目录运行

我有一个批处理文件,可以像这样调用其他批处理文件:

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目录中

windows batch-file batch windows-command-prompt

16
推荐指数
1
解决办法
7万
查看次数

程序不能作为计划任务正常运行

情况

我有一个批处理脚本,它准备一些文件,执行一个程序 ( .exe),然后删除所述文件。

此任务应每小时运行一次,因此我尝试使用计划任务进行配置。问题是前面提到的程序在从任务中调用时无法正常运行(无论是通过.bat脚本还是.exe直接调用),但我在日志中没有收到任何警告或错误消息。

设置

该任务被配置为作为具有正确设置的所有权限的 Windows 服务帐户运行。使用此帐户通过 RDP 登录时,我可以直接执行.bat.exe没有问题,但该任务似乎仍然没有执行任何操作。这很容易观察到,因为程序总是修改文件,并且修改的时间戳不会通过任务改变。

在计划任务日志中,我得到了任务启动进程、退出等的信息消息。然而,“结果代码”是111(尝试谷歌这个没有运气,我得到的唯一关联是“文件名太长",这与 AFAIK 完全无关)。在应用程序日志中,我一无所获。

我怀疑是问题所在

该程序是一个古老的怪物,它产生某种启动画面(它实际上是一个普通窗口),即使不需要 GUI,因为它不需要交互并在操作后自行关闭。窗口出现约 2 秒钟。

我怀疑 GUI 的这一要求与任务失败有关,但我不确定。当我使用运行任务的用户(通过 RDP)登录时,启动计划任务时没有窗口出现。


编辑关于 GUI

我构建了一个非常小的 C# 可执行文件,它在没有主窗口的情况下启动程序(使用ProcessStartInfo.WindowStyle = ProcessWindowStyle.Hidden)。即使这样,计划任务仍然没有成功正确启动程序,但返回码现在是0


更新

当我将任务配置为“无论用户是否登录都运行”并且未选中run with highest privileges选项时,错误值为.2147943859


我能做些什么来排除故障?

操作系统 = Windows Server 2008 R2 SP1

如果需要更多信息,请在评论中告诉我。

troubleshooting scheduled-task batch windows-server-2008-r2

13
推荐指数
2
解决办法
7万
查看次数