我编写了一个小批处理文件来帮助我们进行服务器迁移以使用 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)
知道如何解决这个问题或我做错了什么吗?
我在服务器上有一个文件夹,其中包含每天创建并按日期命名的目录,如下所示:
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
在业务中的另一个流程完成后,我们目前正在设置服务器以进行一些繁重的工作 (ETL),目前我们正在通过计划的 cron 作业或远程执行(通过 ssh)来启动作业。本周早些时候,我们遇到了系统上并行运行的作业过多的问题,这导致所有作业在争夺 CPU 时间时都以蜗牛般的速度运行。
我一直在寻找一个批处理调度程序,一个我们可以将作业插入运行队列的系统,系统将一个一个地处理它们。任何人都可以就一个程序/系统提出建议吗?由于该项目的鞋带性质,低成本 / FOSS 将受到赞赏。
我想运行一个批处理脚本:
我是这样写的:
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) 我在批处理脚本中有一个循环,我想用循环计数器做一些算术运算。我发现了如何评估表达式,如何在此处添加数字:评估 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
谢谢!
有没有一种方法可以在运行特定应用程序时将窗口透明地设置为大写。对于奖励积分,当应用程序终止时,我应该能够恢复正常(非大写锁定模式)。
我用谷歌搜索并浏览了 SO/SF,但我什至不知道从哪里开始找到答案。
谢谢
我正在尝试在某些 .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 都在解析这一行,但不知道筛选什么以及如何筛选。如何让这个开始工作?
我需要使用由 GPO 分发的登录脚本安装软件。目前它正在启动,但它不是以管理员身份运行,所以安装没有完成。
我怎样才能让这个脚本在登录时以管理员身份运行来安装??
注意:所有用户都有一个管理员用户,所以只要以“管理员身份”启动就可以用当前用户运行
在针对大型网络的一种小型缓解措施中,利用 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 批处理命令来实现,该命令接受端口号作为输入。
例如:假设进程 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) batch ×10
windows ×4
powershell ×3
linux ×2
scripting ×2
batch-file ×1
debian ×1
findstr ×1
group-policy ×1
rename ×1
scheduling ×1
variables ×1
windows-7 ×1