我正在尝试创建一个基本菜单,检查输入的变量是否与定义的变量匹配.如果定义了变量,则获取已定义变量的数据.
例.
Item1 = "bill"
Item2 = "cows"
item3 = "abcdef"
Choose_Item = input("Select your item: ")
Run Code Online (Sandbox Code Playgroud)
Item1Choose_Item 应该相等 "bill"我不确定如何解释它,我试图运行一个公式来搜索信息并在单个单元格中多次使用结果.我目前正在执行此操作以显示查询的值,然后运行相同的公式以查找平均值.
示例公式(简化)
=<FormulaToFindValue> & " (" & Round(<FormulaToFindValue>/I52,2) & "/day)"
Run Code Online (Sandbox Code Playgroud)
实际配方
=SUMPRODUCT((MONTH('W.A.R. 2016'!$A4:$A369)>=7)*(MONTH('W.A.R. 2016'!$A4:$A369)<=9)*('W.A.R. 2016'!$A4:$A369<TODAY())*('W.A.R. 2016'!Q4:Q369)) & " (~" & IFERROR(ROUND(SUMPRODUCT((MONTH('W.A.R. 2016'!$A4:$A369)>=7)*(MONTH('W.A.R. 2016'!$A4:$A369)<=9)*('W.A.R. 2016'!$A4:$A369<TODAY())*('W.A.R. 2016'!Q4:Q369))/B18,2),0) & "/day)"
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我必须在同一个单元格中使用相同的公式两次才能得到我想要的结果,有没有办法只运行一次公式并多次使用结果值?通常这可以通过将值存储在变量中来完成,但我不能在excel中看到类似的功能.
因此,在 IT 领域工作,我们几乎总是需要生成安全密码,某些组织除了所需的字符类数量和长度要求之外还添加了更严格的要求。我工作的一个这样的组织也限制了可以连续出现的单个字符类(小写、大写、特殊字符、数字)的字符数。我已经构建了一个确实有助于此目的的函数,但是,它本质上只是暴力破解密码,这是非常糟糕的。从计算机科学的角度来看,知道速度至关重要,同时保持随机性,您将如何解决这个特定问题。
\n我觉得应该有某种我可以实现的洗牌技术,但是我提出的每个解决方案要么太慢,要么降低了字符串的随机性。
\nFunction New-Password {\n PARAM(\n [Int]$PasswordLength = 64,\n [Int]$MinUpperCase = 5,\n [Int]$MinLowerCase = 5,\n [Int]$MinSpecialCharacters = 5,\n [Int]$MinNumbers = 5,\n [Int]$ConsecutiveCharClass = 0,\n [Int]$ConsecutiveCharCheckCount = 1000,\n [String]$LowerCase = 'abcdefghiklmnoprstuvwxyz',\n [String]$UpperCase = 'ABCDEFGHKLMNOPRSTUVWXYZ',\n [String]$Numbers = '1234567890',\n [String]$SpecialCharacters = '!"$%&/()=?}][{@#*+',\n [String]$PasswordProfile = '',\n \n #Advanced Options\n [Bool]$EnhancedEntrophy = $True\n )\n \n If ([String]::IsNullOrEmpty($PasswordProfile) -eq $False) {\n #You can define custom password profiles here for easy reference later on.\n New-Variable -Force -Name:'PasswordProfiles' -Value:@{\n 'iDrac' = [PSCustomObject]@{PasswordLength=20;SpecialCharacters="+&?>-}|.!(',_[`"@#)*;$]/\xc2\xa7%=<:{@";}\n }\n \n …Run Code Online (Sandbox Code Playgroud) 任何人都知道进行递归目录列表的快速方法吗?我正在尝试通过大约 10tb 的 SAN 并且“get-childitem -include”需要几天才能运行......我知道没有办法将其缩短到几分钟,但也许可以通过某种方式将时间缩短到几个小时会很棒。我只需要一个我可以排序的列表不需要文件属性,因为我将使用它来查找我们 SAN 上的某些类型的文件,例如 PST 文件。
如果有人能指出我如何使用来自HERE的编译代码的方向,我也应该很好。
目前它正确编译,但当我运行打开它并单击按钮它将所有文件从C:\添加到CheckedListBox1,但然后停止...
Imports System.IO
Public Class Form1
Public Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles GetProfiles_Button.Click
Dim rootObject As String() = Directory.GetFiles("C:\")
For Each subObject As String In rootObject
searchObject(subObject)
Next
End Sub
Public Shared Sub searchObject(targetObject As String)
If File.GetAttributes(targetObject) = FileAttributes.Directory Then
Form1.CheckedListBox2.Items.Add(targetObject)
Dim subRoot As String() = Directory.GetFiles(targetObject)
For Each subRootObject As String In subRoot
searchObject(subRootObject)
Next
Else
Form1.CheckedListBox1.Items.Add(targetObject)
End If
End Sub
End Class
Run Code Online (Sandbox Code Playgroud) 好吧,我一直在玩这个,但无法让它为每个参数运行命令.
批处理文件运行为
test.bat /r /a /c
Run Code Online (Sandbox Code Playgroud)
完整批代码
@echo on
SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION
:checkloop
set argtoken=1
FOR /F "Tokens=* delims=" %%G IN ("%*") DO (call :argcheck %%G)
pause
GOTO:END
:argcheck
if /i "%1"=="/r" set windows=1
if /i "%1"=="/a" set active=1
goto:eof
:end
Run Code Online (Sandbox Code Playgroud)
"%*"显示所有参数,例如
/r /a /c
Run Code Online (Sandbox Code Playgroud)
但由于某些原因,无论我尝试什么,我都无法让for循环分解不同的参数并:argcheck为每个参数运行.
更新:对于任何对此感兴趣的人都是我最终的结果.我正在用几个不同的脚本实现它,它的工作很棒.只需将它放在脚本中的某个位置,使用调用函数和"%"就可以了.:)发布如果你有任何问题.
@echo off
SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION
call:ArgumentCheck %*
echo %DebugMode%
echo %RestartAfterInstall%
pause
goto:eof
:ArgumentCheck
if "%~1" NEQ "" (
if /i "%1"=="/r" SET DebugMode=Yes & GOTO:ArgumentCheck_Shift
if /i "%1"=="/a" …Run Code Online (Sandbox Code Playgroud) 下午好,
我认为我在这项特殊任务中有点超出了我的能力范围。我正在尝试创建一个正则表达式匹配函数来输入命令,并拆分命令名称、参数和参数值。
新变量 -Name Something -Force 结果应该是
到目前为止我已经想出了这个,但它只捕获了第一个参数集。
额外奖励:有什么方法可以使命令后的所有匹配项以增量方式命名吗?比如说参数 1、值 1、参数 2、值 2 等等?
^(?P<Command>[a-zA-Z]+-[a-zA-Z]+)(?: +)((-\S+)(?: |:|=)(.*){0,1})(?: +)
Run Code Online (Sandbox Code Playgroud)
我根本不知道 PowerShell 解析器的存在,但这太棒了。这是我确定的代码。谢谢你们的帮助!
#Split up the command argument, needed to pull useful information from the command.
New-Variable -force -Name SplitCommand -Value ([System.array]$Null)
$null = [System.Management.Automation.Language.Parser]::ParseInput($Command, [ref]$SplitCommand,[ref]$Null)
$SplitCommand = $SplitCommand.where({-NOT [String]::IsNullOrEmpty($_.text)}).text
Run Code Online (Sandbox Code Playgroud) 好吧,我已经玩了一段时间了,而且我没有在哪里.我需要从一行中拉出KB编号.
我遇到的问题是一些KB数字是6个字符,有些是7,并且似乎无法找到一种方法可以解决错误检测这两个问题.
这产生的两种错误如下
第一个应该只显示6个字符,所以它在末尾添加了额外的" - ".
x64 KB890830- 2012\MS12-000\WinSec-KB890830-006-P58310-Windows-KB890830-x64-V4.9.exe
Run Code Online (Sandbox Code Playgroud)
而第二个错误显示随机"_",因为它使用的第一个KB显示的不是第二个.
ia64 KB_942288 2012\MS12-000\WinSec-KB_942288-007-P58312-WindowsServer2003-KB942288-v4-ia64.exe
Run Code Online (Sandbox Code Playgroud)
编辑批处理文件到目前为止
@ECHO OFF
SETLOCAL enableDelayedExpansion
IF EXIST Export.csv DEL Export.csv
FOR /F "tokens=*" %%I in ('dir /s /b *.*') DO CALl:Generate "%%I"
pause
:Generate
SETLOCAL
IF "%~x1" NEQ ".exe" (
If "%~x3" NEQ ".msu" (
GOTO:EOF
)
)
CALL:FindArchitecture %1
CALL:FindKB %1
CALL:PathFix %1
ECHO %Architecture%,%KB%,%FilePath%>>Export.csv
CALL:Cleanup
ENDLOCAL
GOTO:EOF
:FindArchitecture
ECHO %1 | FINDSTR "x64"
IF "%ERRORLEVEL%"=="0" (
SET Architecture=x64
SET Count+=1
)
ECHO %1 | FINDSTR …Run Code Online (Sandbox Code Playgroud) 好吧,我正在玩视觉基础,似乎有一段时间开始使用xD.无论如何不确定为什么我收到以下错误:
UACLevel_Level没有宣布.由于其保护级别,它可能无法访问.
我尝试点击小帮助图标的东西,它什么也没给我.
Dim ConsentPromptBehaviorAdmin = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "ConsentPromptBehaviorAdmin", Nothing)
Dim EnableLUA = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "EnableLUA", Nothing)
Dim PromptOnSecureDesktop = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "PromptOnSecureDesktop", Nothing)
Dim UACLevel_Value = ConsentPromptBehaviorAdmin + EnableLUA + PromptOnSecureDesktop
If UACLevel_Value = 0 Then
Dim UACLevel_Level = "Never notify me."
ElseIf UACLevel_Value = 6 Then
Dim UACLevel_Level = "Notify me only when programs try to make changes to my computer(do not dim desktop)."
ElseIf UACLevel_Value = 7 Then
Dim UACLevel_Level = "Default - Notify me only when programs try …Run Code Online (Sandbox Code Playgroud) powershell ×3
batch-file ×2
vb.net ×2
.net ×1
dos ×1
excel ×1
file-io ×1
parsing ×1
python ×1
python-3.x ×1
string ×1
windows ×1