我希望它的输出为大写.这就是我所得到的Server.UrlEncode("http://"):
http%3a%2f%2f
Run Code Online (Sandbox Code Playgroud)
但是我需要:
http%3A%2F%2F
Run Code Online (Sandbox Code Playgroud)
C#中有内置的解决方案吗?
编码的url应作为签名基本字符串(输入到签名算法)来创建摘要(哈希).然后哈希将由其他系统(java,php等)验证,因此他们需要首先通过签名重建来重新创建哈希.
如何使用Excel VBA获取长字符串的简短哈希
什么是给定的
到目前为止我做了什么
我认为这个答案是一个很好的开始,因为它生成一个4位十六进制代码(CRC16).
但是4位数字很少.在我的400字符串测试中,20%在其他地方得到了重复.
产生碰撞的机会太高了.
Sub tester()
For i = 2 To 433
Cells(i, 2) = CRC16(Cells(i, 1))
Next i
End Sub
Function CRC16(txt As String)
Dim x As Long
Dim mask, i, j, nC, Crc As Integer
Dim c As String
Crc = &HFFFF
For nC = 1 To Len(txt)
j = Val("&H" + Mid(txt, nC, 2))
Crc = Crc Xor j
For j = 1 …Run Code Online (Sandbox Code Playgroud) 我正在编写一个脚本,用于存档文件以供分析.我的问题是文件名在多个文件夹中不是唯一的,因此它们被覆盖.
例如:
C:\StuffToCopy\Folder1\myFile1.txt
C:\StuffToCopy\Folder1\myFile2.txt
C:\StuffToCopy\Folder2\myFile1.txt
C:\StuffToCopy\Folder2\myFile2.txt
Run Code Online (Sandbox Code Playgroud)
在我的复制过程结束时,我只收到2个文件,但我想要4个.
我希望输出如下:
C:\ArchiveCopy\Folder1_myFile1.txt
C:\ArchiveCopy\Folder1_myFile2.txt
C:\ArchiveCopy\Folder2_myFile1.txt
C:\ArchiveCopy\Folder2_myFile2.txt
Run Code Online (Sandbox Code Playgroud)
到目前为止,这是我的脚本.
$files = dir -r -path "C:\StuffToCopy\" -i *.*
foreach ($file in $files)
{
if ($file.LastWriteTime -gt (get-date).AddDays(-1)) {
copy -path $file C:\ArchiveCopy\
}
}
Run Code Online (Sandbox Code Playgroud)
我想做点什么 copy -path $file.FolderName & '_' & $file C:\ArchiveCopy\
我只是不确定该怎么做.
我正在寻找批处理或Powershell脚本,以使用本地图像作为输入在Google图像上搜索类似的图像.

我的研究到目前为止
使用URL而不是本地文件进行图像搜索的语法如下:
https://www.google.com/searchbyimage?image_url=TEST
其中TEST可以替换为您拥有的任何图像URL.
我使用cURL for windows和imgur作为临时图像保护程序.我能够通过批量上传文件到imgur.然后使用图片网址在Google上搜索类似的图片.
但我想知道是否可以不使用像imgur或任何其他在线图片服务的任何临时缓存.只是批量,卷曲,谷歌和我.
只是一个想法.VBS脚本是否能够使用本地文件作为输入在Google图像上进行搜索?
或者像Tineye这样的类似Web服务更适合这项任务?
此PowerShell代码段将打开谷歌图像搜索.
$IE= new-object -com InternetExplorer.Application
$IE.navigate2("https://www.google.com/imghp?hl=en")
while ($IE.busy) {
sleep -milliseconds 50
}
$IE.visible=$true
Run Code Online (Sandbox Code Playgroud)
接下来的步骤是获取某些按钮的ID并以编程方式单击它们以选择本地文件.但在这里,我没有足够的经验来实现这一目标.
我有一个字符串表示以秒和毫秒为单位的时间.我想将其转换为格式为"hh:mm:ss,fff"的字符串.
我的解决方案仍有缺陷,小于10的小时显示为一个小数而不是两个:
PS> $secs = "7000.6789"
PS> $ts = [timespan]::fromseconds($s)
PS> $res = "$($ts.hours):$($ts.minutes):$($ts.seconds),$($ts.milliseconds)"
PS> $res
PS> 1:56:40,679
Run Code Online (Sandbox Code Playgroud)
实现这一目标的正确方法是什么?我确信有更优雅的方式-f和日期时间.
我是一个Powershell。下午的大部分时间我都在盯着屏幕,试图弄清楚如何比较两个不同目录中多个文件的文件哈希。该脚本会将文件从 FTP 站点下载到一个目录 ($cDlPath) 中,并最终将它们复制到另一个目录 ($cDestPath)。我想比较文件中的文件哈希,以确保自下载以来没有任何变化。我正在使用 Get-Hash cmdlet 来获取文件哈希,但我不知道如何比较这两个哈希。如果文件不相等,我希望能够按名称识别更改的文件,以便检查文件。
我一直在摆弄下面的代码,但这似乎不是我想要的。
Compare-Object `
-ReferenceObject $(Get-ChildItem $cDestPath -Recurse | Where-Object {!$_.psiscontainer } | Get-Hash -Algorithm $cHashAlg) `
-DifferenceObject $(Get-ChildItem $cDlPath -Recurse | Where-Object {!$_.psiscontainer } | Get-Hash -Algorithm $cHashAlg)
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激。
我正在使用下面的代码,我似乎更接近一些。
Compare-Object $(Get-ChildItem $cDlPath -Recurse $_ | Where-Object { !$_.PsIsContainer } |
Select-Object Name, FullName, Length, @{Name=”SHA256 Hash”; Expression={ Get-Hash $_.FullName
-Algorithm "SHA256" }}, LastWriteTime) $( Get-ChildItem $cDestPath -Recurse $_ | Where-Object
{ !$_.PsIsContainer } | Select-Object Name, FullName, Length, @{Name=”SHA256 Hash”; …Run Code Online (Sandbox Code Playgroud) 我想使用Powershell尽可能快地填充具有相同整数值的动态数组.
Measure-Command显示我的系统需要7秒才能填满它.
我当前的代码(剪切)看起来像:
$myArray = @()
$length = 16385
for ($i=1;$i -le $length; $i++) {$myArray += 2}
Run Code Online (Sandbox Code Playgroud)
(完整代码可以在gist.github.com或超级用户上看到)
考虑一下$length可以改变.但为了更好地理解,我选择了固定长度.
问:如何加速此Powershell代码?
以下代码演示了问题标题中所述的问题。
将其复制并粘贴到新的 Microsoft Excel 2003 工作簿中。
Sub mytest()
mypath = Application.GetSaveAsFilename()
Workbooks.OpenText Filename:=mypath, DataType:=xlDelimited, _
TextQualifier:=xlTextQualifierDoubleQuote, _
semicolon:=True, _
fieldinfo:=Array(Array(1, 2), Array(2, 2), Array(3, 2), Array(4, 2)), _
Local:=True
End Sub
Run Code Online (Sandbox Code Playgroud)
执行代码。它将要求输入文件,您应该在其中使用此分号分隔的test.csv。它创建一个新工作簿并将所有数据从 test.csv 导入到 sheet1。
下图显示了结果

但它应该显示这样的结果

fieldinfo:=Array(Array(1, 2), Array(2, 2), Array(3, 2), Array(4, 2))
声明 Excel 应将所有导入的数据视为文本。不幸的是它没有。
有人可以告诉我如何以正确的方式使用 opentext 和 fieldinfo 吗?
我已经知道 QueryTables.Add(Connection[...]
的解决方法。但这不是我的情况的解决方案。
我发现下面的解决方案替换字符串,但我不完全理解它.
如何更改代码以每行替换3个字符串?
我的更改(第12行和第13行)尚未生效.
没有运行第二个和第三个循环是否可能?
ECHO off
SETLOCAL enabledelayedexpansion
SET source="C:\source.srt"
SET target="C:\target.srt"
IF EXIST %target% DEL /f %target%
FOR /f "delims=" %%i IN ('FINDSTR . %source%') DO (
SET line=%%i
SET line=!line:ö=oe!
SET line=!line:ä=ae!
SET line=!line:ü=ue!
ECHO !line! >> %target%
)
Run Code Online (Sandbox Code Playgroud) 以下工作代码列出了放置脚本的所有子文件夹中的所有文件.
它仅包含某些文件类型,并排除某个文件夹中的所有文件.到现在为止还挺好
$fileInclude = @("*.txt", "*.hgr", "*.dat")
$folderExclude = "C:\folder2"
$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition
gci $scriptPath -recurse -include $fileFilter | Where {$_.FullName -notlike "$folderExclude*"}
Run Code Online (Sandbox Code Playgroud)
我的测试的文件结构如图所示
C:.
? Myscript.ps1
?
????folder1
? ? file1.dat
? ? file1.hgr
? ? file1.txt
? ?
? ????folder3
? file3.dat
? file3.hgr
? file3.txt
?
????folder2
file3.dat
file3.hgr
file3.txt
Run Code Online (Sandbox Code Playgroud)
现在我想替换第二行
$folderExclude = "C:\folder2"
Run Code Online (Sandbox Code Playgroud)
用数组.后来有几十条路径.
$folderExclude = @(
"C:\folder2",
"C:\folder1\folder3"
)
Run Code Online (Sandbox Code Playgroud)
显然这不会起作用,因为-notlike需要一个字符串而不是一个字符串数组.
我无法理解如何实现这一点.我想我需要一个for-each循环?
powershell ×6
batch-file ×2
excel-2003 ×2
hash ×2
vba ×2
arrays ×1
c# ×1
curl ×1
encoding ×1
foreach ×1
ms-office ×1
replace ×1
string ×1
urlencode ×1
windows ×1