Windows批处理脚本 - 参数中的Parantheses打破程序输出到变量的分配

时间:2017-02-22 12:07:07

标签: windows batch-file scripting

在解决方案之后 Windows batch assign output of a program to a variable,我使用以下代码:

add_action ( 'show_user_profile', 'my_fields' );
add_action ( 'edit_user_profile', 'my_fields' );

function my_fields ( $user )
{
?>
    <h3>Extra profile information</h3>
    <table class="form-table">
        <tr>
            <th><label for="twitter">Twitter</label></th>
            <td>
                <input type="text" name="twitter" id="twitter" value="<?php echo esc_attr( get_the_author_meta( 'twitter', $user->ID ) ); ?>" class="regular-text" /><br />
                <span class="description">Please enter your Twitter username.</span>
            </td>
        </tr>
    </table>
<?php
}

add_action ( 'personal_options_update', 'my_fields_save' );
add_action ( 'edit_user_profile_update', 'my_fields_save' );

function my_fields_save( $user_id )
{
    if ( !current_user_can( 'edit_user', $user_id ) )
        return false;
    /* Copy and paste this line for additional fields. Make sure to change 'twitter' to the field ID. */
    update_usermeta( $user_id, 'twitter', $_POST['twitter'] );
}

这会破坏包含括号的参数(例如文件名)。例如,标题为“Test File(2017.22.02)[1] .aac”的文件会导致以下错误:FOR /F %%I IN ('"ffprobe -v error -select_streams a:0 -show_entries stream=channels -print_format csv=p=0 %1"') DO ECHO %%I

有关如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:4)

FOR /F "tokens=*" %%I IN (
   'ffprobe -v error -select_streams a:0 -show_entries stream^=channels -print_format csv^=p^=0 "%~1"'
) DO ECHO %%I

试试这样。问题是文件的路径是用引号传递的,整个命令用引号括起来。删除引号后,您需要转义等号。