相关疑难解决方法(0)

SETLOCAL和ENABLEDELAYEDEXPANSION如何工作?

我注意到在大多数脚本中,两者通常在同一行中:

SETLOCAL ENABLEDELAYEDEXPANSION
Run Code Online (Sandbox Code Playgroud)

这两个实际上是单独的命令,可以写在不同的行上吗?

ENABLEDELAYEDEXPANSION如果脚本设置在脚本的第一行并且在脚本结束之前未禁用,那么设置是否会对脚本产生负面影响?

cmd batch-file

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

批处理脚本 - 逐行读取

我有一个日志文件,我需要逐行读入并将该行传递给下一个循环.

首先,我在一个单独的文件中grep日志文件中的"主"字(如"错误") - 以保持它的小.现在我需要获取单独的文件并逐行读取 - 每行需要转到另一个循环(在这些循环中我grep日志并将其分成块)但我卡在这里.

日志看起来像

xx.xx.xx.xx - - "http://www.blub.com/something/id=?searchword-yes-no" 200 - "something_else"
Run Code Online (Sandbox Code Playgroud)

使用for/f循环我只获取IP而不是完整的行.

如何管道/写入/缓冲整行?(每行写什么都没关系)

batch-file

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

批处理脚本如何执行等效于“cat << eof”的操作?

在 Linux (Bash) 中,有一个非常有用的功能可以将文字文本转储到另一个文件中,如下所示:

cat > see.txt << EOF
contents going into
my file
EOF
Run Code Online (Sandbox Code Playgroud)

我需要的是 Windows 批处理脚本的等效项。我还没有找到内置的这种功能,但我想我可以编写一个子程序来做到这一点(我不想依赖自 XP 以来 Windows 中没有的任何东西),但我遇到麻烦。到目前为止,这是我在各种 来源的帮助下所获得的:

call:catMyChunk myCustomText c:\see.txt
exit /b

goto:myCustomText
   This is my test file
   Hope you like it.

    <got these>
    % and these %
    ! these too

   yeah
:myCustomText

:catMyChunk
    ::Should call this function with 2 args, MYDELIM and outFile.txt
    ::where is to be catted to outFile.txt
    ::and text starts with <beginning of line>goto:MYDELIM
    ::and ends …
Run Code Online (Sandbox Code Playgroud)

batch-file

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

逐行读取文本文件并使用批处理脚本将其存储在数组中

我想读取一个文本文件并将每一行存储在一个数组中.当我使用下面的代码时,每次"echo %i%"都打印0,只array[0]分配值.但是,在值中"set n=%i%",n值被指定为最后一个递增的I 值."@echo !array[%%i]!"也是打印!array[0]!而不是打印值.代码中是否有语法错误?

set /A i=0

for /F %%a in (C:\Users\Admin\Documents\url.txt) do (

set /A i+=1

echo %i%

set array[%i%]=%%a

)

set n=%i%

for /L %%i in (0,1,%n%) do @echo !array[%%i]!
Run Code Online (Sandbox Code Playgroud)

windows batch-file

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

使用批处理脚本查找并替换多个文件中的字符串

我在一个文件夹中有3000个文件.我想找到另一个文本并替换它.我怎样才能做到这一点?我是批处理脚本的新手.我可以在1个文件中替换它,但我不知道如何替换多个文件.

FOR /F %%L IN (lala.txt) DO (
    SET "line=%%L"
    SETLOCAL ENABLEDELAYEDEXPANSION
    set "x=!line:E:\Test=E:\Test\Temp!"
    echo f | xcopy /E !line! !x! 
    ENDLOCAL
)
Run Code Online (Sandbox Code Playgroud)

如何编辑我的代码以替换所有文件中的字符串?等待你的帮助.谢谢

replace batch-file find

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

使用for/f和if语句和变量查找和替换字符串

我写了一个批处理文件,我想用另一个.txt文件中的字符串覆盖键字符串.

目前它完全复制新的File.txt文件,但不会用OldFile.txt文件中的字符串替换字符串.

File.txt文件中的字符串示例:

...

#密码
PWORD =

#AccountName
Account =

#TownName
Town =

#Postcode
Postcode =

#LocationChangedDate
LocationChanged =

我想要替换的OldFile.txt文件中的字符串示例:

...

#密码
PWORD = ABC

#AccountName
帐户= 123

#TownName
Town = LDN

#邮编
邮编= WS77TP

#LocationChangedDate
LocationChanged = 01/01/2015

有人可以指出我正确的方向或解释我在哪里犯了错误?

@echo off

setlocal disableDelayedExpansion

::Variables
set InputFile=F:\EXCHANGE\3\Machine\File.txt
set OutputFile=F:\EXCHANGE\3\File-New.txt
set CopyFile=F:\EXCHANGE\3\OldMachine\OldFile.txt

set _strFindPword=Pword=.*
for /F "delims=" %%A in ('findstr /x "Pword=.*" %CopyFile%') do set _strInsertPword=%%A

echo.%_strInsertPword%

set _strFindAccount=Account=.*
for /F "delims=" %%B in ('findstr /x "Account=.*" %CopyFile%') do set _strInsertAccount=%%B …
Run Code Online (Sandbox Code Playgroud)

batch-file find-replace

5
推荐指数
1
解决办法
1123
查看次数

使用批处理文件将二进制文件转换为HEX表示形式

我需要将DLL文件转换为十六进制表示形式,以将其用作字符串的一部分来创建这样的sql服务器程序集

CREATE ASSEMBLY [AssemblyNameHere]
FROM 0x4D5A90000300000004000000FFFF000......continue binary data
WITH PERMISSION_SET = EXTERNAL_ACCESS

由于多种原因,我需要将此文件放入批处理文件中,但似乎FOR语句仅适用于文本文件。

binary batch-file

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

如何使用EnabledDelayedExapnsion输出感叹号?

我正在编辑XML文件,大约前10行是注释.并且对于xml注释在表单中

<!--  COMMENT HERE   -->
Run Code Online (Sandbox Code Playgroud)

但是当使用我的代码时,它不会输出!mark,它搞砸了xml中的注释.据我所知,ENABLEDELAYEDEXPANSION这样做是因为它认为感叹号正在扩展变量.我怎么能让这个工作?

这是我的代码如下

setlocal ENABLEDELAYEDEXPANSION

set line=0

FOR /f "usebackqdelims=" %%a in ("%filename2%") do (
    set /a line = !line!+1 
    if !line!==39 (echo REPLACED TEXT39>>%tempfile%
)else if(!line!==45 (echo REPLACED TEXT45>>%tempfile%
)else (echo %%a>>%tempfile%
))
Run Code Online (Sandbox Code Playgroud)

EDIT1基本上它应该做的是按原样输出每一行,除非它是39行或45行.它可以工作,除了!评论中的标记不会输出,它们不再是评论.

EDIT2

set line=0

FOR /f "usebackqdelims=" %%a in ("%filename2%") do (
setlocal ENABLEDELAYEDEXPANSION
    set /a !line! +=1
echo !line!
    if !line!==39 (
echo REPLACED TEXT39>>%tempfile%
endlocal
)else if !line!==45 (
echo REPLACED TEXT45>>%tempfile%
endlocal
)else (
endlocal
setlocal DISABLEDELAYEDEXPANSION
echo …
Run Code Online (Sandbox Code Playgroud)

shell batch-file

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

逐行将.txt读取到批处理变量中

我有一个批处理脚本,可将ping发送到某些PC。可用的PC被写入文本文件,因此每台PC都站在自己的行中。另一个批处理脚本将一些文件复制到PC(目前尝试将其复制到所有PC)。

现在,我想修改脚本,以便该批处理读出文本文件,仅将其复制到可用的PC上,但是如何?
它应该逐行读取文本文件的书面内容,并检查EOF。

text batch-file

0
推荐指数
1
解决办法
2222
查看次数

标签 统计

batch-file ×9

binary ×1

cmd ×1

find ×1

find-replace ×1

replace ×1

shell ×1

text ×1

windows ×1