小编jeb*_*jeb的帖子

如何为文件的每一行运行命令?

例如,现在我正在使用以下内容来更改我写入文件的Unix路径的几个文件:

cat file.txt | while read in; do chmod 755 "$in"; done
Run Code Online (Sandbox Code Playgroud)

有更优雅,更安全的方式吗?

bash loops line

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

如何指定多行shell变量?

我写了一个查询:

function print_ui_hosts
{
local sql = "select ........."
print_sql "$ sql"
}
Run Code Online (Sandbox Code Playgroud)

本地sql - 一个很长的字符串.查询未格式化.如何将字符串拆分成多行?

bash shell

108
推荐指数
5
解决办法
15万
查看次数

我怎么能逃避惊叹号!在cmd脚本?

当我setlocal ENABLEDELAYEDEXPANSION在cmd脚本中设置时,我有什么方法可以逃脱!我想用作命令的参数?

@echo off
setlocal ENABLEDELAYEDEXPANSION
echo I want to go out with a bang!
echo I still want to go out with a bang^!
Run Code Online (Sandbox Code Playgroud)

cmd batch-file

71
推荐指数
4
解决办法
5万
查看次数

传递给方法时是否按顺序评估参数?

参数在传递给方法时是否按顺序进行评估?

对于Java来说,它总是如此,对于C来说它不是,但C#的答案是什么?

样品

string.Format("byte1={0} byte2={1} byte3={2}", 
  getNextByte(), 
  getNextByte(), 
  getNextByte());

int pos=0;
byte[] arr=new byte[] {1,2,3,4,5,6};
byte getNextByte()
{
  return arr[pos++];  
}
Run Code Online (Sandbox Code Playgroud)

这个样本有效,但它只是运气还是规则?

c#

38
推荐指数
2
解决办法
5545
查看次数

在Windows批处理文件中更改反斜杠以转发斜杠

我正在尝试将所有反斜杠()转换为包含文件名和位置的变量中的正斜杠(/).我读过这个并看到过:

%variable:str1=str2%
Run Code Online (Sandbox Code Playgroud)

set "var=%var:\=/%"
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的,但我显然没有把它弄好.

这是我的.bat脚本的相关部分:

FOR %%f IN ("E:\myfiles\app1\data\*.csv") DO (
  echo %%f  
  set "f=%%f:\=/%"
  echo %%f  
  echo.                 
)
Run Code Online (Sandbox Code Playgroud)

输出显示每个文件名列出两次.

即这一行:

set "f=f:\=/%"
Run Code Online (Sandbox Code Playgroud)

没有做我想做的事.谁能看到我做错了什么?

windows string batch-file slash

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

通过sbatch传递命令行参数

假设我有以下简单的bash脚本,我想通过SLURM提交给批处理服务器:

#!/bin/bash

#SBATCH -o "outFile"$1".txt"
#SBATCH -e "errFile"$1".txt"

hostname

exit 0
Run Code Online (Sandbox Code Playgroud)

在这个脚本中,我只想写hostname一个文本文件的输出,它的全名我通过命令行控制,如下所示:

login-2:jobs$ sbatch -D `pwd` exampleJob.sh 1
Submitted batch job 203775
Run Code Online (Sandbox Code Playgroud)

不幸的是,似乎我的最后一个命令行参数(1)没有通过sbatch解析,因为创建的文件没有我正在寻找的后缀,字符串"$ 1"按字面解释:

login-2:jobs$ ls
errFile$1.txt  exampleJob.sh outFile$1.txt
Run Code Online (Sandbox Code Playgroud)

我在SO其他地方环顾四周,但我没有运气.基本上我正在寻找的是相当于启用Torque的集群-v中的qsub实用程序的切换.

编辑:正如基础评论线程中所提到的,我用困难的方式解决了我的问题:我没有将一个单独的脚本多次提交给批处理服务器,每个脚本都有不同的命令行参数,我创建了一个"主脚本",简单地回显并将相同的内容重定向到不同的脚本上,每个脚本的内容都被传递的命令行参数改变.然后我将所有这些提交到我的批处理服务器sbatch.但是,这不能回答原始问题,所以我不愿意将其添加为我的问题的答案或标记这个问题已解决.

unix bash shell slurm

24
推荐指数
4
解决办法
2万
查看次数

为什么lint不告诉我解析错误的行号和性质?

我正在从Windows批处理文件中调用php lint,如下所示:

@echo off
for %%f in (*.php) do php -l %%f
Run Code Online (Sandbox Code Playgroud)

当文件包含语法错误时,它只输出Errors parsing xxx.php.有没有办法让它告诉我错误的本质是什么,它是什么线?也许另一个开关?

php lint

18
推荐指数
2
解决办法
8489
查看次数

如何使用spring JDBC Template批处理在数据库中进行多次插入?

我需要一次性在数据库中插入数千条记录.我在我的应用程序中使用spring JDBC模板.

下面是我到目前为止编写的代码,它一次执行所有插入.所以,如果我有10,000个用户,他们一次插入.但我想要的是批量执行它们,例如一批500条记录,等等.

@Override
public void saveBatch(final List<Employee> employeeList) {
    final int batchSize = 500;

    getJdbcTemplate().batchUpdate(QUERY_SAVE,
            new BatchPreparedStatementSetter() {
                @Override
                public void setValues(PreparedStatement ps, int i)
                        throws SQLException {
                    Employee employee = employeeList.get(i);
                    ps.setString(1, employee.getFirstname());
                    ps.setString(2, employee.getLastname());
                    ps.setString(3, employee.getEmployeeIdOnSourceSystem());
                }

                @Override
                public int getBatchSize() {
                    return employeeList.size();
                }
            });

}
Run Code Online (Sandbox Code Playgroud)

如何更改上面的代码,以便代替employeeList.size()作为批量大小,我们可以将批量大小称为500,执行它们然后下一个500,依此类推?

请帮忙.

spring-jdbc

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

如何接收最奇怪的命令行参数?

正如在另一个线程中所讨论的如何避免cmd.exe解释shell特殊字符,如<> ^ 从命令行获取所有参数并不容易.

一个简单的

set var=%1
set "var=%~1"
Run Code Online (Sandbox Code Playgroud)

如果你有这样的要求,还不够

myBatch.bat abc"&"^&def
Run Code Online (Sandbox Code Playgroud)

我有一个解决方案,但它需要一个临时文件,它也不是防弹.

@echo off
setlocal DisableDelayedExpansion
set "prompt=X"
(
    @echo on
    for %%a in (4) do (
        rem #%1#
    ) 
) > XY.txt
@echo off
for /F "delims=" %%a in (xy.txt) DO (
  set "param=%%a"
)
setlocal EnableDelayedExpansion
set param=!param:~7,-4!
echo param='!param!'
Run Code Online (Sandbox Code Playgroud)

它失败了像myBatch.bat%a,它显示4而不是%a

在这种情况下,简单的回声%1将起作用.
这显然是for循环,但我不知道如何改变它.
也许存在另一个简单的解决方案

我不需要这个来解决实际问题,但我喜欢在每种情况下都是防弹的解决方案,而不仅仅是在大多数情况下.

escaping batch-file

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

如何将值从一个批处理文件返回到调用者批处理文件

我有一个常见的.bat文件,它读取status.xml文件并找出状态字段的值.然后,其他批处理文件调用此批处理文件以查找状态值.调用批处理文件将文件名发送到公共bat文件.我无法将状态从公共批处理文件发送到调用批处理文件.有人可以帮忙吗?

main batch file
-- will call the common bat file and send the file name and a variable as arguments
setlocal
call Common.bat c:\folderdir\files\status.xml val1
-- trying to print the status returned by the common bat file
echo [%val1%]

common batch file
@ECHO off
setlocal EnableDelayedExpansion

rem will loop through the file and read the value of the status tag
(for /F "delims=" %%a in (%1) do (
set "line=%%a"
set "newLine=!line:<Interface_status>=!"
set "newLine=!newLine:</Interface_status>=!"
if "!newLine!" neq "!line!" ( …
Run Code Online (Sandbox Code Playgroud)

batch-file command-line-arguments

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