标签: batch

检查 UNC 路径时,用于测试文件夹是否存在的批处理脚本失败

我编写了一个小批处理文件来帮助我们进行服务器迁移以使用 GPO 重新映射用户目录。

然而,在批处理文件中,我遇到了一个语法问题,但它仍然失败。这是我到目前为止所拥有的。

If exist "\\server\UserData\%username%"     
GOTO :UNMAP    
ELSE    
NET USE H: \\newserver\UserData\%USERNAME%    
:UNMAP    
NET USE H: /DELETE /Y    
NET USE H: \\newserver\UserData\%USERNAME%
Run Code Online (Sandbox Code Playgroud)

现在,当我运行它时,我得到以下信息:

The syntax of the command is incorrect.
C:\>if exist "\\server\UserData\userfolder"
Run Code Online (Sandbox Code Playgroud)

知道如何解决这个问题或我做错了什么吗?

scripting batch

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

在 Linux 上通过命令行使用正则表达式批量重命名目录

我在服务器上有一个文件夹,其中包含每天创建并按日期命名的目录,如下所示:

07-06-14
08-06-14
09-06-14
Run Code Online (Sandbox Code Playgroud)

等等。

在某些时候,我决定首选命名格式如下:2014-06-07 并且新文件夹使用该格式创建。所以现在该文件夹包含:旧格式的目录和新格式的目录。

如何将旧格式的目录批量重命名为新格式?

我试过这个: rename -n 's/(\d{2})\-(\d{2})\-(\d{2})\20$3-$2-$1//' *

但它抛出错误: Use of uninitialized value $2 in regexp compilation at (eval 1) line 1

linux debian command-line-interface rename batch

4
推荐指数
1
解决办法
4369
查看次数

Linux 上的批处理

在业务中的另一个流程完成后,我们目前正在设置服务器以进行一些繁重的工作 (ETL),目前我们正在通过计划的 cron 作业或远程执行(通过 ssh)来启动作业。本周早些时候,我们遇到了系统上并行运行的作业过多的问题,这导致所有作业在争夺 CPU 时间时都以蜗牛般的速度运行。

我一直在寻找一个批处理调度程序,一个我们可以将作业插入运行队列的系统,系统将一个一个地处理它们。任何人都可以就一个程序/系统提出建议吗?由于该项目的鞋带性质,低成本 / FOSS 将受到赞赏。

linux batch scheduling batch-processing

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

cmd.exe:如何启动后台进程,运行一些东西,停止后台进程

我想运行一个批处理脚本:

  • 启动后台进程(Selenium RC 服务器,如果重要的话);
  • 等待直到后台进程开始侦听某个端口(或等待固定的时间);
  • 运行一些指令;
  • 停止后台进程。

我是这样写的:

start java -jar "path\selenium-server.jar" 
ping -n 5 127.0.0.1 >NUL
"path\Gallio.Echo.exe" "path\MyAssembly.dll"
REM now, how do I stop the background process?
Run Code Online (Sandbox Code Playgroud)

command-line-interface batch background-process

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

在 Windows 批处理脚本中添加存储在变量中的数字

我在批处理脚本中有一个循环,我想用循环计数器做一些算术运算。我发现了如何评估表达式,如何在此处添加数字:评估 Windows 批处理脚本中的表达式

我如何做同样的事情,但有变量?

例如:

set x = 100
for /L %%i in (1,1,5) do (
    set Result=0
    set /a Result = %%i+%%x
    echo %Result%
)
Run Code Online (Sandbox Code Playgroud)

作为我期望的输出

101 102 103 104 105

谢谢!

scripting windows batch

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

将窗口全部大写以用于特定应用

有没有一种方法可以在运行特定应用程序时将窗口透明地设置为大写。对于奖励积分,当应用程序终止时,我应该能够恢复正常(非大写锁定模式)。

我用谷歌搜索并浏览了 SO/SF,但我什至不知道从哪里开始找到答案。

谢谢

powershell windows-7 batch

3
推荐指数
1
解决办法
550
查看次数

获取 PowerShell 命令输出作为 bat (cmd) 脚本中的变量

我正在尝试在某些 .cmd 文件中获取主机的 FQDN。我们有脱节的 AD 域,所以"@echo %COMPUTERNAME%.%USERDNSDOMAIN%"不起作用。我的意思是它有效,但返回错误的值。

我最终得到的解决方案是 powershell.exe -noninteractive -command[System.Net.Dns]::GetHostByName(($env:computerName)).HostName

它在命令行中工作正常。我试图将它放入我的 cmd 文件中的一个变量中:

FOR /F "tokens=* USEBACKQ" %%F IN (\`powershell.exe -noninteractive -command     
[System.Net.Dns]::GetHostByName(($env:computerName)).HostName\`) DO (
    SET var=%%F
)
ECHO %var%
Run Code Online (Sandbox Code Playgroud)

但是此时出现以下错误: ).HostName`) 是意外的。

我知道应该筛选某些内容,因为 cmd 和 powershell 都在解析这一行,但不知道筛选什么以及如何筛选。如何让这个开始工作?

powershell batch windows-command-prompt variables

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

以管理员身份启动 GPO 脚本

我需要使用由 GPO 分发的登录脚本安装软件。目前它正在启动,但它不是以管理员身份运行,所以安装没有完成。

我怎样才能让这个脚本在登录时以管理员身份运行来安装??

注意:所有用户都有一个管理员用户,所以只要以“管理员身份”启动就可以用当前用户运行

windows group-policy batch

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

Windows Batch - 获取当前登录用户的名称

在针对大型网络的一种小型缓解措施中,利用 cmd.exe 替换 Windows 修复中的 utilman.exe,然后更改用户密码,我正在编写一个基于 EventSentry 工具的小脚本,该脚本将检测 utilman.exe已更改,我可以为其附加一个操作。但此检测将在攻击者登录到本地计算机后进行。因此,我正在编写一个脚本来更改访问权限,并阻止删除和重命名 utilman.exe,并且我想为当前登录的用户添加密码更改,然后注销。

这是我到目前为止所拥有的:

 @ECHO off
 takeown /f c:\windows\system32\utilman.exe
 icacls c:\windows\system32\utilman.exe /deny *S-1-1-0:(DE,WD,AD,RX)
 net user [NeedToGetLogedUser] 123456
 shutdown -L
Run Code Online (Sandbox Code Playgroud)

我附加的操作将在另一个用户(而不是实际登录的用户)下执行此脚本。因此,我需要获取登录到计算机的实际当前用户,而不是该脚本将在其下运行的用户。

我在想:

C:\Users\MyUser>query user
USERNAME              SESSIONNAME        ID  STATE   IDLE TIME  LOGON TIME
>MyUser              console             1  Active      none   7/9/2020 6:27 PM
Run Code Online (Sandbox Code Playgroud)

但我不知道如何解析结果,只是为了让“MyUser”单独(使用 findstr)与 net user 命令一起使用。

windows batch findstr

3
推荐指数
1
解决办法
9399
查看次数

如何在 Windows cmd 中获取正在使用端口的特定进程的会话下的所有进程

我想列出并终止属于使用端口的特定进程的会话的所有进程。这应该通过 Windows 批处理命令来实现,该命令接受端口号作为输入。

例如:假设进程 PA 当前正在侦听端口 8081。PA 运行在会话 S1 下。有进程 PB 和 PC 与 PA 属于同一会话。PB和PC将运行在不同的端口上(它们运行在哪个端口上并不重要)

Windows 命令/批处理文件应以 8081 作为输入并终止进程 PA、PB 和 PC。

这可能吗?感谢对此的一些帮助,因为我不太熟悉批处理命令/脚本。

我失败的尝试:

(for /F "tokens=2" %%i in (for /f "tokens=5" %a in ('netstat -aon ^| findstr 8081') do tasklist /NH /FI "PID eq %a") do taskkill /NH /FI "SESSIONNAME eq %%i")
Run Code Online (Sandbox Code Playgroud)

windows powershell batch-file batch windows-command-prompt

3
推荐指数
1
解决办法
2493
查看次数