在批处理脚本中创建包含字符串且不包含 CR 或 LF 的文件

发布于 2024-11-26 12:27:56 字数 522 浏览 0 评论 0原文

我正在尝试在批处理脚本中生成字符串的 sha256 哈希值。

为此,我找到了 sha256sum.exe (链接) 此应用程序仅接受文件参数。

因此,我需要创建一个包含字符串的文件,没有尾随空格,也没有 CR 或 LF。

在我的批处理脚本中,我做了:

echo.|set /P =%var%>temp.txt
sha256sum temp.txt > temp2.txt

我使用第一行删除 CR &但是 LF 在 temp.txt 文件中我看到一个尾随空格字符,然后由 sha256sum.exe 使用。

我试图删除文本文件第一行末尾的尾随空格字符。

我是一名 Linux 用户,我没想到这么简单的事情会成为一个问题。 提前致谢。

I am trying to generate sha256 hash of a string in a batch script.

For this purpose I found sha256sum.exe (link)
this application accepts file arguments only.

Thus I need to create a file with the string, and no trailing space nor CR or LF.

in my batch script I did:

echo.|set /P =%var%>temp.txt
sha256sum temp.txt > temp2.txt

I used the first line to remove CR & LF however in temp.txt file I see a single trailing space char, which is then used by sha256sum.exe.

I am trying to get rid of that trailing space character at the end of the first line of the text file.

I am a linux user and I wasn't expecting such a simple thing to be a problem.
Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

溺孤伤于心 2024-12-03 12:27:56

最简单的事情就是替换所有空格;

set h=0x0C29A1BCD3DC8425712A0107B6693361CCBBABAC 
echo."%h%"
set h=%h: =%
echo."%h%"

>> "0x0C29A1BCD3DC8425712A0107B6693361CCBBABAC "
>> "0x0C29A1BCD3DC8425712A0107B6693361CCBBABAC"

编辑

抱歉,我没有意识到书面值中有多余的空格,

@echo off
set var=hashme
for %%a in (%var%) do (
echo/|set /p ="%%a"
)>temp.txt

FOR /F "tokens=1" %%i in ('sha1sum temp.txt') do SET var=%%i 
echo "%var:~0,-1%"

我下载 sha1sum.exe 怎么样,对于 "hashme" 输出是正确的;

"fb78992e561929a6967d5328f49413fa99048d06"

Simplest thing would be to replace all whitespace;

set h=0x0C29A1BCD3DC8425712A0107B6693361CCBBABAC 
echo."%h%"
set h=%h: =%
echo."%h%"

>> "0x0C29A1BCD3DC8425712A0107B6693361CCBBABAC "
>> "0x0C29A1BCD3DC8425712A0107B6693361CCBBABAC"

Edit

Sorry, I didnt realise the extra space was in the written value, how about

@echo off
set var=hashme
for %%a in (%var%) do (
echo/|set /p ="%%a"
)>temp.txt

FOR /F "tokens=1" %%i in ('sha1sum temp.txt') do SET var=%%i 
echo "%var:~0,-1%"

I downloaded that sha1sum.exe and for "hashme" the output is correct;

"fb78992e561929a6967d5328f49413fa99048d06"
谁的新欢旧爱 2024-12-03 12:27:56

你可以这样做:

set /p =%var%>temp.txt <NUL

而不是:

echo.|set /P =%var%>temp.txt

You can do:

set /p =%var%>temp.txt <NUL

instead of:

echo.|set /P =%var%>temp.txt
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文